Я создал политику авторизации и зарегистрировал обработчик в файле startup.cs. Я хотел бы перенаправить пользователя на пользовательскую страницу с ошибкой при сбое политики, но всегда перенаправляется в / Account / AccessDenied? ReturnUrl = MyPage. Я не могу понять, как зарегистрировать пользовательскую страницу ошибки. Я пробовал несколько вариантов, таких как наличие app.UseStatusCodePages. Любая помощь с благодарностью
Запускать. Cs
public void ConfigureServices(IServiceCollection services)
{
services.AddAuthorization(options =>
{
options.AddPolicy("HomePolicyTestPolicy", policy => policy.Requirements.Add(new AuthorizedPermissionsRequirement(new List<UserPermissionsEnum>() { UserPermissionsEnum.ADEAdmin })));
});
services.AddSingleton<IAuthorizationHandler, AuthorizedPermissionsHandler>();
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env, IHttpContextAccessor accessor)
{
if (env.IsLocalOrDevelopment())
{
app.UseExceptionHandler("/Home/Error");
// app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
app.UseStaticFiles();
app.UseAuthentication();
app.UseSession();
app.UseStatusCodePages(async context =>
{
if (context.HttpContext.Response.StatusCode == 403)
{
context.HttpContext.Response.Redirect("/Error/Index");
}
});
}
Handler:
protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, AuthorizedPermissionsRequirement requirement)
{
context.Fail();
return Task.CompletedTask;
}
Controller:
[Authorize(Policy = "HomePolicyTestPolicy")]
public IActionResult PolicyTest()
{
return View();
}
Результат: он всегда перенаправляет меня в / Account / AccessDenied? ReturnUrl = PolicyTest. Я не могу понять, чтобы позволить ему перенаправить на Home / Error.