ASP.NET Form表单认证

在开发中,一般会遇到,用户一个角色,管理员一个角色的情况,而且每个角色的权限又不同.

 

这个就需要一个加密,安全的Cookies,而ASP.NET Form认证就提供了这个功能.

 

设置角色:

  1. FormsAuthentication.SetAuthCookie("Admin"true);//管理员角色
  2. FormsAuthentication.SetAuthCookie("User"true);//用户角色
  3. //true表示建立的是持久性的Cookies

 

重新设置Cookies,因为刚生成的Cookies只有角色信息,我们还需要存储用户的个人信息,比如:用户编号,用户昵称...

 

  1. HttpCookie cookies = null;
  2. cookies = FormsAuthentication.GetAuthCookie("Admin"true);//重构Admin的Cookies
  3. cookies = FormsAuthentication.GetAuthCookie("User"true);//重构User的Cookies
  4. //生成新的TICKET
  5. FormsAuthenticationTicket oldTicket = FormsAuthentication.Decrypt(cookies.Value);//对原有Cookies解密
  6.           
  7. string userData = "更多用户个人信息";//设置更多用户个人信息
  8. FormsAuthenticationTicket newTicket = new FormsAuthenticationTicket(oldTicket.Version, oldTicket.Name, oldTicket.IssueDate, oldTicket.Expiration, oldTicket.IsPersistent, userData, oldTicket.CookiePath);
  9.             
  10. string EncryptedValue = FormsAuthentication.Encrypt(newTicket);//对原有Cookies加密
  11.             
  12. cookies.Value = EncryptedValue;
  13.             
  14. Response.Cookies.Add(cookies);//将新生成Cookies添加到系统中

 

在其他页面访问是:

 

 

访问角色:

 

  1. string roleName = HttpContext.Current.User.Identity.Name;//Name就是角色信息

 

 

访问Cookies中的用户个人数据:

 

  1. string userInfos = ((FormsIdentity)HttpContext.Current.User.Identity).Ticket.UserData;

 

 

 

剩下就是Web.config里面的配置了:

 

  1. /*
  2. deny代表拒绝
  3. allow自然就是同意
  4. ?代表匿名
  5. *代表所有角色
  6. Admin就是管理员角色,名字可以自己定义
  7. User就是用户角色,名字可以自己定义
  8. path表示,你要用Form认证的文件路径
  9. */
  10. <location path="AdminLogin.aspx">
  11.    <system.web>
  12.      <authorization>
  13.        <deny users="?"/>
  14.        <deny users="*"/>
  15.        <allow users="Admin"/>
  16.        <allow users="User"/>
  17.      </authorization>
  18.    </system.web>
  19.  </location>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值