コード例 #1
0
        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 = @"抱歉,你不具有当前操作的权限!"
                    };
                }
            }
        }
コード例 #2
0
        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, "密码不正确")));;
            }
        }
コード例 #3
0
        public bool HasAuthority(string authorityName)
        {
            if (this == UserContext.Empty)
            {
                return(false);
            }
            bool has = new AuthorityMenuProvider().HasAuthority(UserContext.Current.Id, authorityName);

            return(has);
        }