zoukankan      html  css  js  c++  java
  • 使用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存放数据,存在一定的安全隐患





















  • 相关阅读:
    一个网络狂人的财富轨迹
    婚姻的精髓
    软件史上最伟大的十大程序员
    由瓜子理论引出的人力资源管理启示
    感情裂缝的"维修工" 在生活抛锚的地方起航
    寻找更新过的数据
    asp.net mvc中TempData和ViewData的区别
    SQL Server Backup
    VS字符串时间转换用法
    SQL Server 根据动态条件insert,update语句
  • 原文地址:https://www.cnblogs.com/gossip/p/3545709.html
Copyright © 2011-2022 走看看