我正在使用 ASP.NET Core Razor Pages 和 Identity。当用户导航到某个授权路线
/secret
(他无法访问)时,我希望浏览器显示:
/403
但它实际上表明:
/403?ReturnUrl=%2Fsecret
我发现没有指向该查询字符串;它在登录页面上有意义,而不是在静态 403 页面上。
如何删除它?
我在启动过程中指定了OnRedirectToAccessDenied:
builder.Services.ConfigureApplicationCookie(x => {
x.AccessDeniedPath = new PathString("/403");
x.Event = new CookieAuthenticationEvents {
OnRedirectToAccessDenied = context => {
context.Response.StatusCode = 403;
return Task.CompletedTask;
}
};
});
它手动处理每个 403 事件,有效地从原始 URL 中剥离查询字符串。