• 使用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存放数据,存在一定的安全隐患





















  • 相关阅读:
    Django框架-模板层
    Django框架-路由层
    Django流程-以登录功能为例
    常见的MySQL慢查询优化
    函数之二
    python 之 函数
    python 文件操作
    set dict tuple 内置方法
    leetcode
    python 之 数据类型初接触
  • 原文地址:https://www.cnblogs.com/gossip/p/3545709.html
Copyright © 2020-2023  润新知