使用HttpContext中的User属性来实现用户身份验证之用户验证票篇

本文介绍了如何使用用户验证票来代替系统缓存保存用户登录信息,以减少资源占用。通过修改web.config配置,设置节点为Forms模式,并利用Cookie原理,实现用户身份验证。代码示例展示了如何在Page加载时检查用户验证票,以及验证用户角色。
摘要由CSDN通过智能技术生成

在我的上一篇《使用HttpContext中的User属性来实现用户身份验证》中已经讲了怎样来使用HttpContext.User属性来实现用户身份验证,并且还写了一个示例程序。但是,在上一篇文章中,我们使用的是系统缓存来保存用户的登录信息,这无疑是占用系统资源的一种做法,那有没有更好的办法呢?我在上一章中说过大家可以尝试使用用户验证票的方式来保存用户登录信息的,这种方式是基于Cookie原理来实现的,因此避免了使用缓存所带来的困扰。我们已经有了上一篇的基础,这次只需要在它的基础上稍加修改就可以了。

 

要使用这种方法,我们首先要配置web.config文件,把<authentication>节点的属性mode改为Forms,再在该节点中添加<forms name="ContextUser" loginUrl="~/WebForm1.aspx" protection="None" slidingExpiration="true" />,这些代表的意思可以在MSDN上查到,这里就不多作解释了。

下面是修改后的代码:

 

MyPage.cs

 

using System;

using System.Collections;

 

namespace HttpContextUserEG

{

     /// <summary>

     /// MyPage 的摘要说明。

     /// </summary>

     /// 继承自Page

     public class MyPage : System.Web.UI.Page

     {

         public MyPage()

         {

              //

              // TODO: 在此处添加构造函数逻辑

              //

         }

 

         protected override void OnInit(EventArgs e)

         {

              base.OnInit (e);

              this.Load +=new EventHandler(MyPage_Load);

         }

 

         //在页面加载的时候从缓存中提取用户信息

         private void MyPage_Load(object sender, System.EventArgs e)

         {

              if(Context.User.Identity.IsAuthenticated)

              {

                   if(!(Context.User is MyPrincipal))

                   {

                       MyPrincipal principal = new MyPrincipal(Context.User.Identity.Name);

                       Context.User = principal;

                   }

              }

         }

     }

}

 

MyPrincipal.cs

 

using System;

using System.Collections;

 

namespace HttpContextUserEG

{

     /// <summary>

     /// MyPrincipal 的摘要说明。

     /// </summary>

     /// 实现IPrincipal接口

     public class MyPrincipal : System.Security.Principal.IPrincipal

     {

         private System.Security.Principal.IIdentity identity;

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值