/// <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); } }
/// <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); } }