Form身份验证

时间:2023-03-10 04:46:06
Form身份验证

Forms身份验证
Web.config
<system.web>
<authentication mode="Forms">    
        <forms loginUrl="登陆地址.aspx" defaultUrl="Default.aspx" />   <!--设置你的登陆页-->  defaultUrl如果直接打开的就是 登陆地址.aspx 用户名密码输入成功后跳转的页面
      </authentication>
      <authorization>  
        <deny users="?"/> <!--告诉所有未登录用户无权直接等主页 就是让你不登陆无法进入其他页子-->  ?表示所有用户
       <allow users="*"/><!--所有用户可以直接不登陆直接浏览--> *表示所有用户
      </authorization>
    </system.web>

后台跳转就不能使用response.redirect而要使用
FormsAuthentication.RedirectFromLoginPage(txtuser.Text,false) 第二个参数的意思 是否要创建永久cookie false就是否每次进都要从输入 true是 第一次进完第二次就不用从新输入
在跳转后的页子后台要获取txtuser.Text 要使用
Context.User.Identity.Name

FormsAuthentication.SignOut()注销登录

Web.config例子

  1. <system.web>
  2. <compilation debug="true" targetFramework="4.0" />
  3. <authentication mode="Forms">
  4. <forms loginUrl="Login.aspx" defaultUrl="Default.aspx"/>
  5. </authentication>
  6. <authorization>
  7. <allow users="*"/>
  8. </authorization>
  9. </system.web>
  10. <location path="admin"> <!--admin是文件夹名称-->  <!--意思就是除了admin文件夹里的文件外其他的都可以随意访问admin文件夹里德文件必须要登录-->
  11. <system.web>
  12. <authorization>
  13. <deny users="?"/>
  14. </authorization>
  15. </system.web>
  16. </location>

Login.aspx后台

FormsAuthentication.RedirectFromLoginPage(登录名, false);

在一个ASP.NET网站中,有些页面会允许所有用户访问,包括一些未登录用户,但有些页面则必须是已登录用户才能访问, 还有一些页面可能会要求特定的用户或者用户组的成员才能访问。 这类页面因此也可称为【受限页面】,它们一般代表着比较重要的页面,包含一些重要的操作或功能。

为了保护受限制的页面的访问,ASP.NET提供了一种简单的方式: 可以在web.config中指定受限资源允许哪些用户或者用户组(角色)的访问,也可以设置为禁止访问。

比如,网站有一个页面:MyInfo.aspx,它要求访问这个页面的访问者必须是一个已登录用户,那么可以在web.config中这样配置:

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

为了方便,我可能会将一些管理相关的多个页面放在Admin目录中,显然这些页面只允许Admin用户组的成员才可以访问。 对于这种情况,我们可以直接针对一个目录设置访问规则:

<location path="Admin">
<system.web>
<authorization>
<allow roles="Admin"/>
<deny users="*"/>
</authorization>
</system.web>
</location>

这样就不必一个一个页面单独设置了,还可以在目录中创建一个web.config来指定目录的访问规则,请参考后面的示例。

在前面的示例中,有一点要特别注意的是:
1. allow和deny之间的顺序一定不能写错了,UrlAuthorizationModule将按这个顺序依次判断。
2. 如果某个资源只允许某类用户访问,那么最后的一条规则一定是 <deny users="*" />

在allow和deny的配置中,我们可以在一条规则中指定多个用户:
1. 使用users属性,值为逗号分隔的用户名列表。
2. 使用roles属性,值为逗号分隔的角色列表。
3. 问号 (?) 表示匿名用户。
4. 星号 (*) 表示所有用户。

有些时候你允许了一些特定的网页可以访问,但是页面出现了一下问题,可能是js或者css不能匿名访问,所以界面出现异常,我们可以这么处理

<?xml version="1.0"?>
<configuration>
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</configuration>

想了解更加详细的,访问:https://www.cnblogs.com/fish-li/archive/2012/04/15/2450571.html