Esempio n. 1
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. 2
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. 3
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);
            }
        }