【问题标题】:Forbid() returns 404禁止()返回 404
【发布时间】:2018-04-14 00:23:04
【问题描述】:
我从网络请求中返回了Forbid(),浏览器声称它收到的是 404 而不是 403。
我已经像这样在 cookie 身份验证中添加了一个处理程序......
o.Events.OnRedirectToAccessDenied += ctx =>
{
ctx.Response.StatusCode = (int)HttpStatusCode.Forbidden;
return Task.FromResult(0);
};
但这似乎没有被调用。
那么,为什么应该返回 403 的方法返回 404?
【问题讨论】:
标签:
asp.net-web-api
asp.net-core-2.0
【解决方案1】:
我遇到了同样的问题。这些是我修复它的步骤:
- 暂时从
Startup 中删除所有异常处理,如app.UseExceptionHandler("/Home/Error")。在我的情况下,404 发生是因为异常处理被破坏了。
- 然后我得到“真正的”错误:我的问题是我没有配置身份验证,因此没有身份验证方案。
在我将正确的身份验证选项添加到 Startup 之后(在我的例子中,我使用了自定义身份验证处理程序)我得到了正确的响应代码:
services.AddAuthentication(LicenseKeyAuthenticationOptions.Scheme)
.AddScheme<LicenseKeyAuthenticationOptions, LicenseKeyAuthenticationHandler>(LicenseKeyAuthenticationOptions.Scheme, null);