使用Forms进行身份验证(Asp.net)



1、背景
     以往项目登陆后的用户信息都是存放在session中,但session有一个问题就是读取的时候需要先实例化所在类,在调用对象()如果用static修饰,则可能到时多次登陆sessionid都一样,存在安全问题。目前的项目使用 FormsAuthentication方式存储登陆用户信息,使用的是Cookie存储方式。

2、代码介绍
      2. 1   public   class   UserInfo 定义当前登陆用户需要存储的基本信息
   2.2 登陆成功后将用户信息对象UserInfo序列化为json字符串存储
          (系统会自动关 联当前用户到 HttpContext.Current.User.Identity.Name )
                var curUser = new UserInfo();
            string  name = JsonConvert.SerializeObject(curUser);
            FormsAuthentication.SetAuthCookie(name, false);
   2.3 登陆用户信息的实体 对象(读取 HttpContext.Current.User.Identity.Name  Json字符串并反序列化为UserInfo对象
  public class Runtime      
  {
        /// <summary>
    /// 当前登录用户相关信息
    /// </summary>
    public static UserInfo CurrentUser
    {
        get
        {
            if (HttpContext.Current.Request.IsAuthenticated)
            {
                SysUser longinUser = JsonConvert.DeserializeObject<UserInfo>(HttpContext.Current.User.Identity.Name);
                if (string.IsNullOrEmpty(longinUser.LoginName))
                {
                    return null;
                }
                else
                {
                    return longinUser;
                }
            }
        }
    }
}
         2.4 退出登陆
               FormsAuthentication.SignOut();

3、优点和缺点
        优点:使用static方法,读取方便;使用Forms验证,安全性有一定保障

        缺点:
        1、保存的基本信息不可过多,否则调用
FormsAuthentication.SetAuthCookie方法时会抛异常(“无法加密身份验证票”)
         2、Forms使用Cookie存放数据,存在一定的安全隐患





















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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值