Authentication ASP.Net核心-禁止页面上的策略和Cookie身份验证原因
我正在使用CookieAuthentication&Policy检查用户,并在失败时重定向到帐户/禁止的url。。。在页面上,我想显示一些详细信息。。比如Authentication ASP.Net核心-禁止页面上的策略和Cookie身份验证原因,authentication,asp.net-core,asp.net-core-mvc,Authentication,Asp.net Core,Asp.net Core Mvc,我正在使用CookieAuthentication&Policy检查用户,并在失败时重定向到帐户/禁止的url。。。在页面上,我想显示一些详细信息。。比如 他们试图访问的页面 失败的原因 和其他调试信息 我的应用程序中有6种类型的用户级别。 目前,当它无法满足用户角色时,它确实会将用户重定向到禁止页面。。。但我无法追踪他们在被禁事件发生前试图访问的页面 Startup.cs中的ConfigureServices() services.AddAuthorization(options =>
- 他们试图访问的页面
- 失败的原因
- 和其他调试信息
services.AddAuthorization(options =>
{
options.AddPolicy("AdminOnly", policy => policy.RequireRole("Admin"));
});
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationScheme = "Cookie",
LoginPath = new PathString("/Account/Login/"),
AccessDeniedPath = new PathString("/Account/Forbidden/"),
AutomaticAuthenticate = true,
AutomaticChallenge = true
});
在Startup.cs中配置()
services.AddAuthorization(options =>
{
options.AddPolicy("AdminOnly", policy => policy.RequireRole("Admin"));
});
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationScheme = "Cookie",
LoginPath = new PathString("/Account/Login/"),
AccessDeniedPath = new PathString("/Account/Forbidden/"),
AutomaticAuthenticate = true,
AutomaticChallenge = true
});
我的控制器:
[Authorize(Policy = "AdminOnly")]
public class MyController : Controller
{
....
}
似乎没有简单的方法(我找不到任何方法)在mvc管道中捕获禁止的结果。另一种方法可能是使用
UseStatusCodePages
并处理403状态代码,但它不在mvc上下文中,您只能以这种方式使用HttpContext属性(如路径)。禁止页面上的ReturnUrl值/querystring始终为空-%2f。。。如果MVC引擎可以填充该页面,那将非常有用。我查看了源代码,cookie身份验证中间件将返回url发送到access denied page()。你确定它是空的吗?我复制了你的代码,我可以确认returnUrl不是空的。所以问题可能在其他地方。您是否尝试过var feature=HttpContext.Features.Get()代码>?是的,你们是对的。通常,它会将ReturnURL放在禁止页面上。我看到%2F是因为该用户试图访问主页/默认页。我仍然认为检测哪个策略阻止用户访问是很方便的。