当我在本地申请时:
[Authorize(Policies.ManagesProducts, AuthenticationSchemes = AuthSchemes.Cookies)]
授权正常。但是,对于全局过滤器,我得到
services.AddMvc(opt =>
{
var authorize = new AuthorizeFilter(
new IAuthorizeData[]
{
new AuthorizeAttribute {AuthenticationSchemes = AuthSchemes.ConnectDeviceCookies}
});
opt.Filters.Add(authorize);
})
Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationHandler:Debug:AuthenticationScheme:Cookies已成功通过身份验证。 Microsoft.AspNetCore.Authorization.DefaultAuthorizationService:信息:授权失败。 Microsoft.AspNetCore.Mvc.RazorPages.Internal.PageActionInvoker:跟踪:授权过滤器:在过滤器Microsoft.AspNetCore.Mvc.Authorization.AuthorizeFilter上执行OnAuthorizationAsync之后。 Microsoft.AspNetCore.Mvc.RazorPages.Internal.PageActionInvoker:信息:筛选器“ Microsoft.AspNetCore.Mvc.Authorization.AuthorizeFilter”的请求授权失败。 Microsoft.AspNetCore.Mvc.RazorPages.Internal.PageActionInvoker:跟踪:执行操作结果之前,Microsoft.AspNetCore.Mvc.ForbidResult。 Microsoft.AspNetCore.Mvc.ForbidResult:Information:使用身份验证方案(Cookies)执行ForbidResult。 Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationHandler:信息:AuthenticationScheme:禁止使用Cookie。 Microsoft.AspNetCore.Mvc.RazorPages.Internal.PageActionInvoker:跟踪:执行操作结果后,Microsoft.AspNetCore.Mvc.ForbidResult。
用于登录后用户重定向到的页面。
答案 0 :(得分:0)
这是因为您限制了对所有控制器的访问,包括登录操作。为此,您需要将AllowAnonymousAttribute应用于登录操作(GET和POST),以允许未经身份验证的用户登录。
答案 1 :(得分:0)
在asp.net核心中,您无法将AuthorizeAttribute
添加到MvcOptions.Filters
中。创建一个AuthorizationPolicy
并使用AuthorizeFilter
var policy = new AuthorizationPolicyBuilder()
.AddAuthenticationSchemes(AuthenticationScheme)
.Build();
services.AddMvc(options =>
{
options.Filters.Add(new AuthorizeFilter(policy));
});
请参阅here