public AuthorizeResultModel Authorize(AuthorizeChallengeModel model)
        {
            bool result = false;
            var  user   = DbContext.Users.FirstOrDefault(e => e.UserName == model.UserName);

            if (user != null)
            {
                //Roleに拡張性を持たせる為、IRoleStoreの実装ではなく、独自で行う
                result = user.IsInRole(model.Controller, model.Action);
            }
            return(AuthorizeResultModel.Create(model, result));
        }
Esempio n. 2
0
        public void OnAuthorization(AuthorizationContext filterContext)
        {
            //ControllerまたはActionにAllowAnonymous属性が付与されているか確認
            var isAllowAnonymous = filterContext.Controller.GetType().IsDefined(typeof(AllowAnonymousAttribute), true) ||
                                   filterContext.ActionDescriptor.IsDefined(typeof(AllowAnonymousAttribute), true);

            if (!isAllowAnonymous && filterContext.HttpContext.User.Identity.IsAuthenticated)
            {
                var userName   = filterContext.HttpContext.User.Identity.Name;
                var controller = filterContext.ActionDescriptor.ControllerDescriptor.ControllerName;
                var action     = filterContext.ActionDescriptor.ActionName;

                var authModel   = AuthorizeChallengeModel.Create(userName, controller, action);
                var resultModel = DI.Container.Resolve <IAuthService>().Authorize(authModel);
                if (!resultModel.IsSuccess)
                {
                    filterContext.Result = new RedirectResult(Definitions.Auth.UNAUTHORIZE_REDIRECT_PATH);
                }
            }
        }