public override void OnActionExecuting(ActionExecutingContext filterContext) { var controllerName = filterContext.RouteData.Values["controller"].ToString(); var actionName = filterContext.RouteData.Values["action"].ToString(); if (UserContext.Current.Id == 0) { filterContext.Result = new RedirectToRouteResult("Default", new RouteValueDictionary(new { controller = "account", action = "login" })); } else { IAuthorityMenuProvider iauthority = new AuthorityMenuProvider(); var myMenus = iauthority.GetMenusByAccountId(UserContext.Current.Id);//获取用户的所有权限 if (myMenus != null && myMenus.Count > 0) { //没有访问权限则提示用户 if (myMenus.All(authorityMenuModel => authorityMenuModel.Url != "/" + controllerName + "/" + actionName)) { filterContext.Result = new JsonResult { Data = new ResultModel(false, "抱歉,你不具有当前操作的权限"), JsonRequestBehavior = JsonRequestBehavior.AllowGet }; } } else { filterContext.Result = new ContentResult { Content = @"抱歉,你不具有当前操作的权限!" }; } } }
public JsonResult LoginOn(LoginModel model, string returnUrl) { var redis = new ETS.NoSql.RedisCache.RedisCache(); string cachekey = CookieHelper.ReadCookie("Cookie_Verification"); if (string.IsNullOrEmpty(cachekey)) { return(Json(new ResultModel(false, "验证码不正确"))); } var captcha = redis.Get <string>(cachekey); if (captcha == null || model.Captcha != captcha) { return(Json(new ResultModel(false, "验证码不正确"))); } var loginResult = iAccountProvider.ValidateUser(model.UserName, MD5Helper.MD5(model.Password)); switch (loginResult) { case ETS.Enums.UserLoginResults.Successful: var authorityProvider = new AuthorityMenuProvider(); var account = authorityProvider.GetAccountByName(model.UserName); var userInfo = new SimpleUserInfoModel { Id = account.Id, LoginName = account.LoginName, GroupId = account.GroupId, RoleId = account.RoleId, Password = model.Password, AccountType = ParseHelper.ToInt(account.AccountType, 1) }; string json = JsonHelper.ToJson(userInfo); _authenticationService.SignIn(json); //获取用户权限菜单id数组,存入cookie中 List <int> myMenusR = authorityProvider.GetMenuIdsByRoloId(account.RoleId); List <int> myMenus = authorityProvider.GetMenuIdsByAccountId(account.Id); if (myMenusR != null) { foreach (var i in myMenusR.Where(i => !myMenus.Contains(i))) { myMenus.Add(i); } } string menujson = JsonHelper.ToJson(myMenus); CookieHelper.WriteCookie("menulist", menujson, DateTime.Now.AddDays(10)); return(Json(new ResultModel(true, "成功"))); case ETS.Enums.UserLoginResults.UserNotExist: return(Json(new ResultModel(false, "用户不存在"))); case ETS.Enums.UserLoginResults.AccountClosed: return(Json(new ResultModel(false, "用户已经锁定"))); default: return(Json(new ResultModel(false, "密码不正确")));; } }
public bool HasAuthority(string authorityName) { if (this == UserContext.Empty) { return(false); } bool has = new AuthorityMenuProvider().HasAuthority(UserContext.Current.Id, authorityName); return(has); }