用户验证心得--基于FORMS的身份验证

我做了个项目,用户验证时用的SESSION,用户信息保存在SESSION里面,服务器运行一段时间后,在服务器负载大的时候,用户登录后用户信息经常丢失,后来我把用户验证改为了基于FORMS的验证后,基本上不会丢失用户信息了,我的软件框架设计为:

首先在Web.Config中将验证改为Forms,不允许匿名访问;

<authentication   mode="Forms" >
      <forms   name=".MYOB_APP"   loginUrl="loginout.aspx" protection="All" timeout="30"  path="/" requireSSL="false" slidingExpiration="true" defaultUrl="default.aspx" cookieless="UseDeviceProfile" enableCrossAppRedirects="false" />
    </authentication>
    <authorization >
      <deny   users="?" />
    </authorization>

登陆验证时查询数据库,如果用户有效则建立用户票证:用户附加数据格式用名称值格式,多个数据用“;”分开。

            string userdata = "BranchID:1;RoleID:1";
            FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, username, DateTime.Now, DateTime.Now.AddMinutes(30), false, userdata, FormsAuthentication.FormsCookiePath);
            string encTicket = FormsAuthentication.Encrypt(ticket);
            Response.Cookies.Add(new HttpCookie(FormsAuthentication.FormsCookieName, encTicket));

在框架的页面基类里面将当前http请求中的将用户登录ID,和其他附加数据取出,再查询数据库,将当前用户的相关信息,以及相关需要缓存的数据取出,以备当前请求页逻辑使用。

        FormsIdentity identity = (FormsIdentity)this.Page.User.Identity;
        string userdata = identity.Ticket.UserData;
        用户id就是 this.Page.User.Identity.Name

这样系统就完全不用SESSION验证了,如果用户没有登录或没有活动而超时系统自动将引导向loginout.aspx,在这个页面处理一些清理工作,再引导至登陆验证页面

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值