Esempio n. 1
0
        public static CurrentUser GetCurrentUser()
        {
            if (HttpContext.Current == null)
            {
                return(null);
            }
            CurrentUser cuser           = null;
            string      cookieLoginInfo = CookieMgr.Get(UserBLL.LoginCookieName);

            if (!string.IsNullOrEmpty(cookieLoginInfo))
            {
                var CrypteKey = ConfigMgr.GetAppSettingString("CrypteKey");
                cuser = JsonConvert.DeserializeObject <CurrentUser>(Cryptor.DesDecrypt(cookieLoginInfo, CrypteKey));
                string cacheLoginInfo = CacheMaker.RedisCache.Get <string>(cuser.UserID);
                if (!string.IsNullOrEmpty(cacheLoginInfo))
                {
                    if (cookieLoginInfo.Equals(cacheLoginInfo))
                    {
                        return(cuser);
                    }
                    else
                    {
                        return(null);
                    }
                }
                else
                {
                    return(null);
                }
            }
            else
            {
                return(null);
            }
        }
Esempio n. 2
0
        /// <summary>
        /// 登录,将用户信息保存到浏览器的cookie与服务器cache里
        /// </summary>
        /// <param name="Model"></param>
        /// <returns></returns>
        public static bool SignIn(SysUser Model, out string homePath)
        {
            CurrentUser cuser = new CurrentUser();

            cuser.UserID        = Model.ID;
            cuser.LoginName     = Model.LoginName;
            cuser.LastLoginTime = DateTime.Now;
            var roles = Model.SysUserRoles.Select(sur => new { sur.SysRole.Name, sur.SysRole.ID, sur.SysRole.Level, sur.SysRole.DefaultHomePath, Rights = sur.SysRole.SysRoleRights.Select(rr => rr.RightID) }).ToList();

            cuser.HomePath  = roles.FirstOrDefault(ro => ro.Level == roles.Min(r => r.Level)).DefaultHomePath;
            homePath        = cuser.HomePath;
            cuser.RolesID   = string.Join(",", roles.Select(r => r.ID).ToArray());
            cuser.RolesName = string.Join(",", roles.Select(r => r.Name).ToArray());
            var rightIDs = roles.SelectMany(rr => rr.Rights).Distinct().ToArray();

            cuser.RightIDs = string.Join(",", rightIDs);
            var    cuserStr  = Newtonsoft.Json.JsonConvert.SerializeObject(cuser);
            var    CrypteKey = ConfigMgr.GetAppSettingString("CrypteKey");
            var    cuserHash = Cryptor.DesEncrypt(cuserStr, CrypteKey);
            string domain    = CookieMgr.GetDomain(HttpContext.Current.Request.Url.ToString());

            CookieMgr.Set(LoginCookieName, cuserHash, 0, domain);
            if (CacheMaker.RedisCache.Set(cuser.UserID, cuserHash))
            {
                return(true);
            }
            else
            {
                CookieMgr.Remove(LoginCookieName);
                return(false);
            }
        }
Esempio n. 3
0
        /// <summary>
        /// 注销,清除浏览器的cookie和服务器中缓存的用户信息
        /// </summary>
        /// <returns></returns>
        public static bool SignOut()
        {
            var cuser = CurrentUser.GetCurrentUser();

            if (cuser == null)
            {
                return(false);
            }
            else
            {
                CookieMgr.Remove(LoginCookieName);
                CacheMaker.RedisCache.Remove(cuser.UserID);
                return(true);
            }
        }
Esempio n. 4
0
        /// <summary>
        /// 登录,将用户信息保存到浏览器的cookie与服务器cache里
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public bool SignIn(SysUser model, out string homePathOrMsg)
        {
            CurrentUser cuser = new CurrentUser();

            cuser.UserID        = model.ID;
            cuser.LoginName     = model.LoginName;
            cuser.LastLoginTime = DateTime.Now;
            var roles = model.SysUserRoles.Where(ur => !ur.SysRole.IsDel && ur.SysRole.IsAvailable).Select(sur => new
            {
                sur.SysRole.Name,
                sur.SysRole.ID,
                sur.SysRole.Level,
                sur.SysRole.DefaultHomePath,
                Rights = sur.SysRole.SysRoleRights.Where(rr => !rr.SysRight.IsDel && rr.SysRight.IsAvailable).Select(rr => rr.RightID)
            }).ToList();

            if (roles != null && roles.Count > 0)
            {
                cuser.HomePath  = roles.FirstOrDefault(ro => ro.Level == roles.Min(r => r.Level)).DefaultHomePath;
                homePathOrMsg   = cuser.HomePath;
                cuser.RolesID   = string.Join(",", roles.Select(r => r.ID).ToArray());
                cuser.RolesName = string.Join(",", roles.Select(r => r.Name).ToArray());
                var rightIDs = roles.SelectMany(rr => rr.Rights).Distinct().ToArray();
                cuser.RightIDs = string.Join(",", rightIDs);
                var    cuserStr  = JsonConvert.SerializeObject(cuser);
                var    CrypteKey = ConfigMgr.GetAppSettingString("CrypteKey");
                var    cuserHash = Cryptor.DesEncrypt(cuserStr, CrypteKey);
                string domain    = CookieMgr.GetDomain(HttpContext.Current.Request.Url.ToString());
                CookieMgr.Set(LoginCookieName, cuserHash, 0, domain);
                if (CacheMaker.RedisCache.Set("sidkey" + cuser.UserID, cuserHash))
                {
                    return(true);
                }
                else
                {
                    CookieMgr.Remove(LoginCookieName);
                    homePathOrMsg = "缓存设置失败,请管理员检查是否安装缓存服务";
                    return(false);
                }
            }
            else
            {
                homePathOrMsg = "当前用户没有启用的角色";
                return(false);
            }
        }
Esempio n. 5
0
        /// <summary>
        /// 判断当前请求是否还了用户登录的cookie信息,如果带了,则再判断服务器缓存中记录是否有该用户的登录信息并是否一致
        /// </summary>
        /// <param name="request"></param>
        /// <param name="cuser"></param>
        /// <returns></returns>
        private bool IsSignIn(HttpRequestBase request, out CurrentUser cuser)
        {
            cuser = null;
            string cookieLoginInfo = CookieMgr.Get(UserBLL.LoginCookieName);

            if (!string.IsNullOrEmpty(cookieLoginInfo))
            {
                var CrypteKey = ConfigMgr.GetAppSettingString("CrypteKey");
                cuser = JsonConvert.DeserializeObject <CurrentUser>(Cryptor.DesDecrypt(cookieLoginInfo, CrypteKey));
                string cacheLoginInfo = CacheMaker.RedisCache.Get <string>("sidkey" + cuser.UserID);
                if (!string.IsNullOrEmpty(cacheLoginInfo))
                {
                    return(cookieLoginInfo.Equals(cacheLoginInfo));
                }
                else
                {
                    return(false);
                }
            }
            else
            {
                return(false);
            }
        }