예제 #1
0
        public async Task OnAuthorizationAsync(AuthorizationFilterContext context)
        {
            bool isAnonymous = context.ActionDescriptor.HasAttribute <AllowAnonymousAttribute>();

            if (isAnonymous)
            {
                return;
            }

            var  userInfo  = context.HttpContext.Session.Get <LoginUserContext>(CommonStrings.COMMON_INFO_IN_SESSION);
            bool isNoCheck = context.ActionDescriptor.HasAttribute <NoCheckPasswordExpiredAttribute>();

            if (userInfo?.PasswordExpired == true && !isNoCheck)
            {
                logger.Info("パスワードの有効期限切れ。パスワード変更画面に遷移します。");
                string passwordChangeUrl = new PathString("/K0030_ChangePassword/Index");

                //パスワードの有効期限が切れている場合は、パスワード変更画面にしかいけない。
                if (context.HttpContext.Request.IsAjaxRequest())
                {
                    context.HttpContext.Response.StatusCode = StatusCodes.Status401Unauthorized;
                    context.Result = WebUtil.JsonContent(AjaxResult.CreateRedirectResult(passwordChangeUrl));
                }
                else
                {
                    context.Result = new RedirectResult(passwordChangeUrl);
                }
            }
        }