/// <summary> /// 刷新菜单 /// </summary> public void setMenuCache() { using (var db = SugarBase.GetIntance()) { var menu_list_all = db.Queryable <SysModule>().Where(m => m.Status).ToList(); RedisHelper.StringSet("system:SysModule", MD5CryptHelper.Encrypt(JsonConvert.Serialize(menu_list_all))); } }
public JsonResult RefreshCache() { var jsonm = new ResultJson(); try { using (var db = SugarBase.GetIntance()) { //刷新配置项 //RedisHelper.StringSet(KeyHelper.CACHE_SITE_CONFIG, LoadConfig(Utils.GetXmlMapPath(KeyHelper.FILE_SITE_XML_CONFING))); BasicConfigHelper.setBasicConfig(); //刷新菜单 setMenuCache(); //刷新当前登录权限 var usermodel = db.Queryable <SysUser>().Where(m => m.SysUserID == SysUserModel.UserID).First(); if (usermodel != null) { var userModel = new AccountToken(); userModel.UserID = usermodel.SysUserID; userModel.UserName = usermodel.SysNickName; var menu_list = db.Queryable <SysModule, SysRoleModule, SysRole, SysUserRole>((sm, srm, sr, sur) => new object[] { JoinType.Left, sm.ID == srm.ModuleID, JoinType.Left, srm.RoleID == sr.RoleID, JoinType.Left, sr.RoleID == sur.RoleID, }) .Where((sm, srm, sr, sur) => sur.UserID == usermodel.SysUserID) .OrderBy((sm, srm, sr, sur) => sm.Sort, OrderByType.Desc) .Select(sm => new SysModule { ID = sm.ID, Href = sm.Href, Business = sm.Business, Icon = sm.Icon, Name = sm.Name, Sort = sm.Sort, Type = sm.Type, ParentID = sm.ParentID }).ToList(); userModel.MenuList = menu_list; var daySpan = TimeSpan.FromMinutes(30); RedisHelper.StringSet("system:SysToken:" + userModel.UserID, MD5CryptHelper.Encrypt(JsonConvert.Serialize(userModel)), daySpan); } } } catch (Exception ex) { jsonm.status = 500; jsonm.msg = "清理失败"; LogProvider.Error("清理缓存", ex.StackTrace, ex.Message); } return(Json(jsonm)); }
public List <SysModule> GetSysModule() { var list = new List <SysModule>(); try { var MenuListStr = RedisHelper.StringGet("system:SysModule"); if (!string.IsNullOrEmpty(MenuListStr)) { list = JsonConvert.DeserializeJsonToList <SysModule>(MD5CryptHelper.Decrypt(MenuListStr)); } } catch (Exception) { list = new List <SysModule>(); } return(list); }
/// <summary> /// 获取登录用户信息 /// </summary> /// <returns></returns> public AccountToken getToken() { var model = new AccountToken(); var MenuList = new List <SysModule>(); try { var auth = HttpContextHelper.Current.AuthenticateAsync(CookieAuthenticationDefaults.AuthenticationScheme).Result; if (auth.Succeeded) { var tokenCookieModel = new AccountToken() { UserID = HttpContextHelper.Current.User.Claims.First().Value }; //} // var tokenCookie = CookieHelper.GetCookie("systoken"); //if (!string.IsNullOrEmpty(tokenCookie)) //{ //var tokenCookieModel = JsonConvert.Deserialize<AccountToken>(MD5CryptHelper.Decrypt(tokenCookie)); if (RedisHelper.KeyExistsAsync("system:SysToken:" + tokenCookieModel.UserID).Result) { var SysTokenStr = RedisHelper.StringGetAsync("system:SysToken:" + tokenCookieModel.UserID).Result; if (!string.IsNullOrEmpty(SysTokenStr)) { model = JsonConvert.Deserialize <AccountToken>(MD5CryptHelper.Decrypt(SysTokenStr)); if (model == null) { model = new AccountToken(); } } } } } catch (Exception) { model = new AccountToken(); } return(model); }
/// <summary> /// 在资源过滤器之后,绑定模型之后,方法执行之前 /// </summary> /// <param name="context"></param> public override void OnActionExecuting(ActionExecutingContext context) { fcinfo = new filterContextInfo(context); var isDefined = false; var controllerActionDescriptor = context.ActionDescriptor as ControllerActionDescriptor; if (controllerActionDescriptor != null) { isDefined = controllerActionDescriptor.MethodInfo.GetCustomAttributes(inherit: true) .Any(a => a.GetType().Equals(typeof(MyNoActionFilter))); } var AreasList = new string[] { "Admin", "SysAdmin" }; if (isDefined) { return; } if (!AreasList.Contains(fcinfo.moduleName)) { return; } bool result = true; var auth = HttpContextHelper.Current.AuthenticateAsync(CookieAuthenticationDefaults.AuthenticationScheme).Result; if (auth.Succeeded) { var tokenCookieModel = new AccountToken() { UserID = HttpContextHelper.Current.User.Claims.First().Value }; //var tokenCookie = CookieHelper.GetCookie("systoken"); //if (!string.IsNullOrEmpty(tokenCookie)) //{ //var tokenCookieModel = JsonConvert.Deserialize<AccountToken>(MD5CryptHelper.Decrypt(tokenCookie)); if (tokenCookieModel != null) { if (RedisHelper.KeyExistsAsync("system:SysToken:" + tokenCookieModel.UserID).Result) { var SysTokenStr = RedisHelper.StringGetAsync("system:SysToken:" + tokenCookieModel.UserID).Result; if (!string.IsNullOrEmpty(SysTokenStr)) { var model = JsonConvert.Deserialize <AccountToken>(MD5CryptHelper.Decrypt(SysTokenStr)); if (model != null) { if (model.MenuList != null && (fcinfo.moduleName != "SysAdmin" && fcinfo.controllerName != "Home") || (fcinfo.moduleName == "SysAdmin" && fcinfo.controllerName != "Home")) { var SysModuleListStr = ""; if (RedisHelper.KeyExistsAsync("system:SysModule").Result) { SysModuleListStr = RedisHelper.StringGetAsync("system:SysModule").Result; } var SysModuleList = JsonConvert.DeserializeJsonToList <SysModule>(MD5CryptHelper.Decrypt(SysModuleListStr)); bool isMenu = false; foreach (var item in SysModuleList) { if (context.HttpContext.Request.Path.Value.Equals(item.Href)) { isMenu = true; break; } } if (isMenu) { isMenu = false; foreach (var item in model.MenuList) { if (context.HttpContext.Request.Path.Value.Equals(item.Href)) { isMenu = true; break; } } if (!isMenu) { context.HttpContext.Response.StatusCode = 404; } } } result = false; } } } } } if (result) { //context.Result = new RedirectResult("/SysAdmin/Account/Login"); //context.Result = new RedirectToRouteResult("SysAdmin/Login", new RouteValueDictionary { }); context.HttpContext.Response.WriteAsync( " <script type='text/javascript'>window.top.location='/SysAdmin/Account/Login'; </script>"); context.Result = new EmptyResult(); return; } if (context.HttpContext.Response.StatusCode == 404) { context.Result = new RedirectResult("/error/404"); return; } base.OnActionExecuting(context); //throw new NotImplementedException(); }
public JsonResult LoginSubmit(string username, string password, string vercode = "") { var jsonm = new ResultJson(); try { ; var sessionid = CookieHelper.GetCookie("sessionid"); var result = false; if (RedisHelper.KeyExists("imgcode:" + sessionid)) { var code = RedisHelper.StringGet("imgcode:" + sessionid); if (code.Trim().ToUpper() == vercode.Trim().ToUpper()) { result = true; } else { jsonm.status = 500; jsonm.msg = "验证码错误"; } } if (result) { using (var db = SugarBase.GetIntance()) { if (!string.IsNullOrEmpty(username) && !string.IsNullOrEmpty(password)) { var model = db.Queryable <SysUser>().Where(m => m.Status == 1 && m.SysUserName.Equals(username.Trim()) && m.SysUserPwd.Equals(SHACryptHelper.SHA256Encrypt(password))).First(); if (model != null) { var userModel = new AccountToken(); userModel.UserID = model.SysUserID; userModel.UserName = model.SysNickName; var menu_list = db.Queryable <SysModule, SysRoleModule, SysRole, SysUserRole>((sm, srm, sr, sur) => new object[] { JoinType.Left, sm.ID == srm.ModuleID, JoinType.Left, srm.RoleID == sr.RoleID, JoinType.Left, sr.RoleID == sur.RoleID, }) .Where((sm, srm, sr, sur) => sur.UserID == model.SysUserID && sm.Status) .OrderBy((sm, srm, sr, sur) => sm.Sort, OrderByType.Desc) .OrderBy((sm, srm, sr, sur) => sm.CreateTime, OrderByType.Asc) .Select(sm => new SysModule { ID = sm.ID, Href = sm.Href, Business = sm.Business, Icon = sm.Icon, Name = sm.Name, Sort = sm.Sort, Type = sm.Type, ParentID = sm.ParentID }).ToList(); CookieHelper.WriteCookie("systoken", MD5CryptHelper.Encrypt(JsonConvert.Serialize(userModel)), 30); var claims = new[] { new Claim("UserID", model.SysUserID), new Claim("UserName", model.SysNickName) }; var claimsIdentity = new ClaimsIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme); ClaimsPrincipal user = new ClaimsPrincipal(claimsIdentity); //var identity = new ClaimsIdentity(); //identity.AddClaim(new Claim(ClaimTypes.Sid, userModel.UserID)); //identity.AddClaim(new Claim(ClaimTypes.Name, userModel.UserName)); HttpContextHelper.Current.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, user); userModel.MenuList = menu_list; var daySpan = TimeSpan.FromMinutes(30); RedisHelper.StringSet("system:SysToken:" + userModel.UserID, MD5CryptHelper.Encrypt(JsonConvert.Serialize(userModel)), daySpan); setMenuCache(); SetSysLog("【系统登录】" + userModel.UserName, 1, 1); //HttpContext.Session.SetString("SysToken", MD5CryptHelper.Encrypt(JsonConvert.Serialize(userModel))); jsonm.status = 200; jsonm.msg = "登录成功"; } else { jsonm.status = 500; jsonm.msg = "账号或密码错误"; } } else { jsonm.status = 500; jsonm.msg = "请填写账号信息"; } } } } catch (Exception ex) { jsonm.status = 500; jsonm.msg = "登录失败"; LogProvider.Error("登录", ex.StackTrace, ex.Message); } return(Json(jsonm)); }