asp.net中的窗体身份验证(最简单篇)

  在创建网站中,常常会使用到身份验证。asp.net中内置了几种身份验证的方式,如Windows、Froms、Passport等。这几种身份验证的方式各有不同。一般来说,网站的身份验证方式都会经过以下几个步骤:

    1、输入用户名和密码,单击确定按钮。

    2、在后台判断用户名和密码是否正确,如果错误返回提示;如果正确,进入可访问的页面。

 

    在ASP时代,通常都会在验证用户名和密码是否匹配之后,创建一个Session,然后在每个需要验证的页面中判断Session是否存在,如果存在,则显示页面内容;如果不存在,产生提示,并跳转到登录页面。

 

    但是,在asp.net时代,这个过程就给大大的减化了,不再需要在每个需要验证的页面中去校验Session,只需要进行如下几步,就可以完成身份验证过程。

 

    第一步:修改web.config文件。

    1、在<system.web>和</system.web>中找到<authentication>节,将其改为“<authentication mode="Forms" />”,其中Forms代表使用表单认证。

    2、<system.web>和</system.web>中添加“<authorization><deny users="?"/></authorization>”,其中“<deny users="?"/>”代表拒绝所有的匿名用户。

 

    第二步:创建login.aspx文件。

    在经过第一步之后,无论用户访问网站中的哪个文件,只要没有经过身份验证,asp.net会自动跳转到login.aspx网页上,并且在URL中使用ReturnUrl参数来传递用户当前访问的网页。

    假设用户没有经过身份验证就直接访问test.aspx文件,那么asp.net会自动跳转了login.aspx网页,此时浏览器窗口中的地址栏中的URL为:“login.aspx?ReturnUrl=%2ftest.aspx”,因此,可以在身份验证通过后,再将网页跳回到ReturnUrl参数指定的网页上去。

 

    第三步:在login.aspx文件中验证身份。

    身份验证方式比较简单,一般都是创建一个文本框和一个密码框,用户输入用户名和密码后,单击提交按钮,则去数据库中验证身份,详细过程就不写了,在此只要输入的用户名为1,密码为2就认为身份验证通过。

    身份验证完毕之后,使用FormsAuthentication.SetAuthCookie()为用户创建一个身份验证的票据,并将其添加到Cookie中。以后,再访问网站中的其他网页,就不需要使用进行身份验证了。单击提交按钮后的代码如下所示。

    

[c-sharp] view plaincopyprint?
  1. protected void Button1_Click(object sender, EventArgs e)  
  2. {  
  3.     //身份验证方式,本例中用户名为1,密码为2   
  4.     if (TextBox1.Text == "1" && TextBox2.Text == "2")  
  5.     {  
  6.         /* 
  7.          * 为用户名创建一个身份验证票据,并将其添加到响应的Cookie中 
  8.          * SetAuthCookie的第一个参数为已验证的用户的名称。 
  9.          * SetAuthCookie的第二个参数为true时代表创建持久Cookie(跨浏览器会话保存的 Cookie),为false则关闭浏览器后要重新验证身份 
  10.          */  
  11.         FormsAuthentication.SetAuthCookie(TextBox1.Text, false);  
  12.     }  
  13.     //如果URL中没有传递ReturnUrl参数,则跳转到Default.aspx,否则跳转到ReturnUrl参数值指定的网页   
  14.     if (string.IsNullOrEmpty(Request.QueryString["ReturnUrl"]))  
  15.     {  
  16.         Response.Redirect("Default.aspx");  
  17.     }  
  18.     else  
  19.     {  
  20.         Response.Redirect(Request.QueryString["ReturnUrl"].ToString());  
  21.     }  
  22. }  

protected void Button1_Click(object sender, EventArgs e) { //身份验证方式,本例中用户名为1,密码为2 if (TextBox1.Text == "1" && TextBox2.Text == "2") { /* * 为用户名创建一个身份验证票据,并将其添加到响应的Cookie中 * SetAuthCookie的第一个参数为已验证的用户的名称。 * SetAuthCookie的第二个参数为true时代表创建持久Cookie(跨浏览器会话保存的 Cookie),为false则关闭浏览器后要重新验证身份 */ FormsAuthentication.SetAuthCookie(TextBox1.Text, false); } //如果URL中没有传递ReturnUrl参数,则跳转到Default.aspx,否则跳转到ReturnUrl参数值指定的网页 if (string.IsNullOrEmpty(Request.QueryString["ReturnUrl"])) { Response.Redirect("Default.aspx"); } else { Response.Redirect(Request.QueryString["ReturnUrl"].ToString()); } } 

 

 

    短短三步,就可以进行身份验证,是不是很COOL?

转载于:https://www.cnblogs.com/sunshch/archive/2012/05/30/2526900.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/379660.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

bat文件调用dos命令 (dos淘金)

ECHO命令是大家都熟悉的DOS批处理命令的一条子命令&#xff0c;但它的一些功能和用法也许你并不是全都知道&#xff0c;不信你瞧&#xff1a; 1&#xff0e; 作为控制批处理命令在执行时是否显示命令行自身的开关 格式&#xff1a;ECHO [ON|OFF] 如果想关闭“ECHO OFF”命令…

response细节点

一、 1&#xff09;、response获得的流不需要手动关闭&#xff0c;Tomcat容器会帮你自动关闭 2&#xff09;、getWriter和getOutputStream不能同时调用 //error package com.itheima.content;import java.io.IOException; import javax.servlet.ServletException; import java…

Java RandomAccessFile writeBytes()方法与示例

RandomAccessFile类writeBytes()方法 (RandomAccessFile Class writeBytes() method) writeBytes() method is available in java.io package. writeBytes()方法在java.io包中可用。 writeBytes() method is used to write the sequence of bytes (i.e. string) to the file. E…

linux内核设计与实现---下半部和推后执行的工作

下半部和推后执行的工作1 下半部为什么要用下半部下半部的环境内核定时器2 软中断软中断的实现软中断处理程序执行软中断使用软中断3 tasklettasklet的实现使用taskletksoftirqd4 工作队列工作队列的实现工作、工作队列和工作者线程之间的关系使用工作队列5 下半部机制的选择6 …

Jquery对复选框的操作

<from> 你的爱好是?<br/> <input type"checkbox" name"items" value"篮球" />篮球 <input type"checkbox" name"items" value"乒乓球" />乒乓球 <input type"checkbox" na…

HttpServletRequest(request的一些API)

一、request的运行流程 首先&#xff0c;自己写一个web工程&#xff0c;也就是建一个工程&#xff1b;当把该web工程发布到Tomcat服务器当中&#xff0c;可以让外界访问&#xff0c;这就成了一个web应用。 在客户端输入一个网站&#xff0c;是web应用资源的地址URL&#xff0c…

DCI:James O. Coplien和Trygve Reenskau提出的新架构方法

http://www.infoq.com/cn/news/2009/05/dci-coplien-reenskau 转载于:https://www.cnblogs.com/yelinpalace/archive/2009/06/13/1502573.html

Java ObjectStreamField getOffset()方法与示例

ObjectStreamField类的getOffset()方法 (ObjectStreamField Class getOffset() method) getOffset() method is available in java.io package. getOffset()方法在java.io包中可用。 getOffset() method is used to get the offset of this ObjectStreamField field. getOffse…

Mac VSCode配置C语言环境(可以调试)

Mac VSCode配置C语言环境c_cpp_properties.jsontasks.jsonlaunch.json新建一个文件夹&#xff0c;用vscode&#xff0c;然后再新建一个test.c文件。 #include <stdio.h>int main(void) {int a1,b1;int cab;printf("%d\n",c);return 0; }这篇文章说怎么配置c_c…

XmlPullParserException

今天在android的开发中约到一个问题 使用Ksoap2 访问 WebService 抛出 XmlPullParserException 异常。 在网上淘了一下这个问题 http://www.eoeandroid.com/thread-70527-1-1.html 不能解决我的问题&#xff0c;求解转载于:https://www.cnblogs.com/pengqinping/archive/2012/0…

vShpere Client在win 7 RC下和2008下 无法正常连接esx主机之解决办法

vShpere Client在win 7 RC下和2008下 无法正常连接esx主机之解决办法 在win7下和2008下打开client后连接esx主机会出现2个错误提示, 第一个是 第二个是 然后就连接失败了,开始以为是CC的esx主机安装有问题,后来找了找,借助了强大google工具,终于找到解决办法.解决办法如下: 1.从…

tooctalstring_Java Integer类toOctalString()方法的示例

tooctalstring整数类toOctalString()方法 (Integer class toOctalString() method) toOctalString() method is available in java.lang package. toOctalString()方法在java.lang包中可用。 toOctalString() method is used to represent an octal string of the given parame…

localhost与127.0.0.1之间的关系更改

其实localhost的默认IP地址为127.0.0.1&#xff0c;因为这是一种映射关系。 更改步骤如下&#xff1a; C:\Windows\System32\drivers\etc 下的hosts 打开hosts可以看到 更改即可

基于Hash表的排序--C语言

我们知道&#xff0c;C语言里面是没有hash表的&#xff0c;但是我们可以用一个结构体表示&#xff0c;对结构体排序&#xff0c;我们可以用qsort排序。 下面我们用一个LeedCode上面的一道题目讲解。 347. 前 K 个高频元素 这个题目是让我们求解前k个高频元素&#xff0c;求解思…

ORACLE10g R2及PATH官方下载地址

ORACLE10g R2及PATH官方下载地址 Oracle Database 10g Release 2 (10.2.0.1.0) Enterprise/Standard Edition for Microsoft Windows (32-bit)http://download.oracle.com/otn/nt/oracle10g/10201/10201_database_win32.zip http://download.oracle.com/otn/nt/oracle10g/102…

[网摘]Javascript中最常用的55个经典技巧

1. οncοntextmenu"window.event.returnValuefalse" 将彻底屏蔽鼠标右键<table border οncοntextmenureturn(false)><td>no</table> 可用于Table 2. <body onselectstart"return false"> 取消选取、防止复制 3. οnpaste"…

Java集合unmodifiableMap()方法及示例

集合类unmodifiableMap()方法 (Collections Class unmodifiableMap() method) unmodifiableMap() method is available in java.util package. unmodifiableMap()方法在java.util包中可用。 unmodifiableMap() method is used to get a non-modifiable view of the given Map (…

Linux内核设计与实现---内核同步方法

内核同步方法1 原子操作原子整数操作原子性与顺序性的比较原子位操作2 自旋锁自旋锁是不可递归的其他针对自旋锁的操作自旋锁和下半部3 读-写自旋锁4 信号量创建和初始化信号量使用信号量5 读-写信号量6 自旋锁和信号量7 完成变量8 互斥锁互斥锁API9 禁止抢占10 顺序和屏障1 原…

单击浏览器右上角的X弹出提示窗口

单击浏览器右上角的X弹出提示窗口&#xff0c;简单实现。 <script language"javascript">window.onunload function () { if (event.clientY < 0 && event.clientX> document.body.scrollWidth) { //event.returnValue …

Java DataOutputStream writeChars()方法及示例

DataOutputStream类writeChars()方法 (DataOutputStream Class writeChars() method) writeChars() method is available in java.io package. writeChars()方法在java.io包中可用。 writeChars() method is used to write the given string as a sequence of characters to th…