c# - AuthorizeFilter 失败时如何返回 403 而不是重定向访问被拒绝
问题描述
在 Startup.ConfigureServices() 我配置授权过滤器是这样的:
services.AddMvc(options =>
{
options.Filters.Add(new AuthorizeFilter(myAuthorizationPolicy));
})
我使用基于配置的 cookie 身份验证或 AAD 身份验证:
if (useCookieAuth)
{
services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie();
}
else
{
services.AddAuthentication(AzureADDefaults.AuthenticationScheme)
.AddAzureAD(options => Configuration.Bind("Authentication:AzureAd", options));
}
现在,当我访问一个页面并myAuthorizationPolicy
失败时,我被重定向到“Account/AccessDenied?ReturnUrl=%2F”,但我想返回 403。
解决方案
看来您必须覆盖 OnRedirectToAccessDenied
services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie(options => {
options.Events.OnRedirectToAccessDenied = context => {
context.Response.StatusCode = 403;
return Task.CompletedTask;
};
});
推荐阅读
- asp.net - IIS7 Windows 2008 R2 w3wp.exe 未释放内存
- yii2 - PHP单元测试没有覆盖Yii2模型的所有属性标签
- ruby-on-rails - Rails 5.2 和 webpacker 3.4.3:部署到 Heroku 时资产未编译
- c# - MVC 视图导入页面不存在
- if-statement - Tableau 中的 IF、THEN、ELSEIF 语句
- c# - C# NpgsqlException 模拟起订量
- makefile - Makefile - suddenly needs .o rule after editing makefile
- sql - 在订单之间添加一个空行
- javascript - 遍历 React 中的对象
- python - Django - 组合多个变量