表单验证浅谈

  在每一本ASP.NET的技术书籍中,都会谈到身份验证。但是所提到的东西都感觉比较复杂,需要掌握比较多的东西才能够运用。就算想简单的用用登录控件,也需要几个控件配合使用,并且还要合理配置web.config,还有数据库表。这往往另人一头雾水,并且感觉不太使用,因为控件的外观往往很难满足我们对于界面的要求。

  我们往往只需要这样的需求。对于网站目录,只有一部分限制匿名用户访问,需要通过了用户验证才可以;并且用户验证信息存储在用户自定义的数据库中;登录成功后跳转自定义页面;匿名用户访问受限文件,会自动跳转到登录界面;退出后需要重新登录。

  这样的需求有一个很简单也很清晰地实现方式,这种方式适合大部分的项目。

  首先在web.config中限制匿名用户的访问目录,在根节点<configuration>下,放入下面的代码:  

 
  
< location path ="" >
  < system.web >
    < authorization >
      < deny users ="?" />
    </ authorization >
  </ system.web >
</ location >

  <location path="">填入你想限制匿名用户访问目录的路径,<deny users="?"/>表示拒绝所有匿名用户访问此目录。

  然后更改身份验证提供程序,和配置验证页面和验证通过后的跳转页面:  

 
  
< authentication mode ="Forms" >
  < forms name ="" loginUrl ="" defaultUrl ="" />
</ authentication >

  身份验证提供程序必须为"Forms";name是网站标识,如果在一个服务器下有多个网站,比如网站是处于虚拟主机上的话,那么这个name需要自定义一个名称;loginUrl是登录验证页面的路径,这个页面可以处于受限目录下,也可以处于其他目录中,在受限目录下匿名用户也可以访问这个页面;defaultUrl是登录成功后的自动跳转页面路径,这个不需要在程序中作任何设置,这个页面的跳转是自动的,只要登录成功。

  web.config中的配置就这样就结束了,下面我们需要在登录验证页面中做一点小小的工作,告诉程序是否验证成功。

  当用户输入用户名和密码之后,我们需要把用户的输入提交到我们自定义储存用户验证信息的地方,比如SQL Server中进行核对,如果验证成功,那么在验证成功的这个判断中加入下面的代码:  

 
  
FormsAuthentication.RedirectFromLoginPage( , false );

  注意,需要引用System.Web.Security命名空间。这个方法是把用户信息储存到Cookie中,这样在验证的有效期内访问受限页面就不用再次验证。这个方法有两个参数第一个是经过身份验证的用户名,第二个参数是个布尔值,false表示创建非持久化会话的Cookie。然后系统会自动跳转到我们在web.config中设置的defaultUrl页面。

  最后我们需要添加退出功能。这个功能需要在需要退出的事件中加入下面的代码:  

 
  
FormsAuthentication.SignOut();

Response.BufferOutput
= true ;
Response.Redirect(
"" , false );

  第一句代码同样需要引入System.Web.Security命名空间。第一句代码的意思就是退出登录;第二句表示缓冲输出,也就是在整个网页处理完毕后再输出;第三句就是重定向登出后页面。

  Redirect方法有两个参数,第一个就是重定向页面路径,第二个是个布尔值,随便哪个值都可以,设置为true是立即终止当前页面进程,这样系统会抛出一个异常来终止进程,设置为false就是不终止当前页面。效果上都一样,这个异常是不能避免的,如果不想有异常抛出,设置为false就可以了。 

  就这样,一个基本的登录验证系统已经实现了。

转载于:https://www.cnblogs.com/xpengg/archive/2010/12/07/1899078.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值