Asp.Net实现FORM认证的一些使用技巧(必看篇)

2019-05-22 12:11:31于丽

此处,即说明此目录下的所有文件,允许所有人访问。

关于 Web.config 作用范围的说明:

• Web.config 的设置将作用于所在目录的所有文件及其子目录下的所有东东(继承:子随父姓)

• 子目录下的 Web.config 设置将覆盖由父目录继承下来的设置(覆盖:县官不如现管)

• 也就是,属性设置由最深一层的目录里的Web.config决定;如果子目录里没有Web.config文件,则由离它最近的父目录里的Web.config决定

方法二:仍然保持注册页和登录页在同一目录下

只需要在根目录下的Web.config 中加入以下一段:

<location path="Register.aspx">
 <system.web>
   <authorization>
    <allow users="*"/>
   </authorization>
 </system.web>
</location>

通过location节的path属性的值指定Register.aspx页面,以及下面authorization节的设置,说明了Register.aspx页面是允许被所有人访问。

注意:

location节应加在原有的system.web节的外面,包含在configuration节内,和system.web节是同级的。  

当根目录下,有多个页面不需要登录就可以访问时,可以设置多个location节,修改对应path属性值指向的页面就可以了。

另外,path属性的值也可以指定目录,用来指定该目录的访问限制。通过修改authorization节的内容来限定访问权限。详细的设置,后面会提到。

第三步:实现登录的代码

1、普通的代码实现

方法一:

如果forms节中设置了“defaultUrl”的属性,也就是登录后默认转向的页面,则可以用如下的方法:

private void Btn_Login_Click(object sender, System.EventArgs e) 
{ 
 if(this.Txt_UserName.Text=="Admin" && this.Txt_Password.Text=="123456") 
 { 
   FormsAuthentication.RedirectFromLoginPage(this.Txt_UserName.Text,false); 
 } 
} 

此处只是简单模拟了一下登录的验证过程,RedirectFromLoginPage方法能发送验证票据验证Cookie(如何进行可以用Reflector去查看源代码),返回请求页面,即“从哪来就打哪去”。比如:用户没登录前直接在 IE 地址栏输入 http://localhost/Test/Default.aspx ,那么该用户将看到的是 Login.aspx?ReturnUrl=Default.aspx ,输入用户名与密码登录成功后,系统将根据“ReturnUrl”的值,返回相应的页面;如果没有“ReturnUrl”,则按照“defaultUrl”的属性自动转向。

方法二:

private void Btn_Login_Click(object sender, System.EventArgs e)
{ 
  if(this.Txt_UserName.Text=="Admin" && this.Txt_Password.Text=="123456") 
  { 
   FormsAuthentication.SetAuthCookie(this.Txt_UserName.Text,false); 
   Response.Redirect("Default.aspx"); 
  } 
} 


此处是分两步走:通过验证后就直接发放 Cookie ,跳转页面将由程序员自行指定,无需“defaultUrl”设置。此方法对于程序员来说,更灵活。