启用窗口身份验证,禁用匿名。当用户进入网站时,我检查他们是否是该网站的用户。如果不是,我想将它们视为未授权。但是,Chrome会继续提示他们输入用户名和密码,而不是将其发送到错误页面。永远不要提示用户输入用户名/密码,因为自动Windows身份验证已启用而匿名功能已关闭。
控制器:
public async Task<IActionResult> Login()
{
if (await IsValidUser())
{
return RedirectToAction("Index");
}
else
{
return new UnauthorizedResult();
}
}
启动
app.UseStatusCodePages(async context =>
{
var response = context.HttpContext.Response;
await context.HttpContext.Response.WriteAsync(
"Status code page, status code: " +
context.HttpContext.Response.StatusCode);
response.Redirect("~/Account/AccessDenied");
});
答案 0 :(得分:0)
即使您定位的是Chrome浏览器,互联网安全设置仍然有效。关于您的问题,您的代码似乎没有任何问题(是否有问题,顺便说一句?)。请查阅this link并了解它并不能告诉您该更改可能带来的后果。这更适合于SuperUser,而不是堆栈溢出。
答案 1 :(得分:0)
第一个问题是.net核心应用程序中是否对用户进行了AD身份验证。如果未通过身份验证(凭据错误), IMO提示是浏览器行为,当启用窗口身份验证,禁用匿名时,此身份验证在到达您的应用程序代码之前由Web服务器进行,因此IIS在将请求传递给ASP.NET之前先进行身份验证。该请求将永远不会到达错误页面。
解决方法可能是对AD Membership Providers使用Forms Authentication。下面的线程提供了代码示例,但是我还没有测试:
如果用户已通过身份验证并且要进行授权,则可以单击here以获得代码示例,当然,如果授权失败,也可以将用户重定向到错误页面。