原理

session实际上是把session 保存在了cookie中,用户每次访问都发送sessionid给服务器,服务器根据sessionid取用户数据

 

1把session保存到缓存服务器中 

namespace XFT.Service
{
    /// <summary>
    ///用户状态管理
    /// </summary>
    public class Session
    {
        private HttpContextBase context;

        public const string SessionName = "SessionId_";

        /// <summary>
        /// 当前SessionId.
        /// </summary>
        /// <value>The session identifier.</value>
        public string SessionId { get; set; }

        /// <summary>
        /// 初始化
        /// </summary>
        /// <param name="_context"></param>
        public Session(HttpContextBase _context)
        {
            var context = _context;
            var cookie = context.Request.Cookies.Get(SessionName);
            if (cookie == null || string.IsNullOrEmpty(cookie.Value))
            {
                SessionId = SessionName + Guid.NewGuid();
                context.Response.Cookies.Add(new HttpCookie(SessionName, SessionId));
                context.Request.Cookies.Add(new HttpCookie(SessionName, SessionId));
            }
            else
            {
                SessionId = cookie.Value;
            }
        }

        /// <summary>
        /// 获取当前用户信息
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <returns>System.Object.</returns>
        public object Get<T>() where T : class,new()
        {
            return xftwl.Infrastructure.CouchBaseHelper.DocumentGet<T>(SessionId);
        }

        /// <summary>
        /// 用户是否在线
        /// </summary>
        /// <returns><c>true</c> if this instance is login; otherwise, <c>false</c>.</returns>
        public bool IsLogin()
        {
            return xftwl.Infrastructure.CouchBaseHelper.DocumentExist(this.SessionId);
        }

        /// <summary>
        /// 登录
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="obj">The object.</param>
        public void Login<T>(T obj) where T : class,new()
        {
            xftwl.Infrastructure.CouchBaseHelper.DocumentUpsert<T>(SessionId, obj, 60 * 30);
        }

        /// <summary>
        /// 退出
        /// </summary>
        public void Logout()
        {
            xftwl.Infrastructure.CouchBaseHelper.DocumentRemove(SessionId);
        }

        /// <summary>
        /// 续期
        /// </summary>
        public void Postpone()
        {
            if (xftwl.Infrastructure.CouchBaseHelper.DocumentExist(SessionId))
            {
                var user = xftwl.Infrastructure.CouchBaseHelper.DocumentGet<Data.LoginUserModel>(SessionId);
                if (user != null)
                {
                    xftwl.Infrastructure.CouchBaseHelper.DocumentUpsert<Data.LoginUserModel>(SessionId, user, 60 * 30);
                }
            }

        }

        /// <summary>
        /// 在线用户数量
        /// </summary>
        /// <returns>System.Int32.</returns>
        public int Count()
        {
            return 10000;
        }
    }
}
保存session会话至缓存

相关文章:

  • 2021-04-24
  • 2021-10-19
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-01-24
猜你喜欢
  • 2021-09-24
  • 2021-12-24
  • 2021-11-30
  • 2021-04-27
  • 2021-12-26
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案