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





















  • 相关阅读:
    LeetCode 11. Container With Most Water
    LeetCode 10 Regular Expression Matching
    LeetCode 9 Palindrome Number
    LeetCode 8 String to Integer (atoi)
    从ASP.NET Core 3.0 preview 特性,了解CLR的Garbage Collection
    HttpClient参观记:.net core 2.2 对HttpClient到底做了神马
    LeetCode 7 Reverse Integer
    《地久天长》观影笔记
    《小丑》观后感
    粒子群基本算法学习笔记
  • 原文地址:https://www.cnblogs.com/gossip/p/3545709.html
Copyright © 2011-2022 走看看