如何使用 windows 身份验证防止 302 重定向
How to prevent 302 redirect using windows authentication
我正在构建一个 MVC5 Web 应用程序,其中 Web API2 用于后端服务器调用,Angularjs 用于客户端代码。该应用程序正在使用 windows 身份验证。对于 Web API 控制器中的某些方法,我已经为特定用户角色设置了 Authorize 属性。问题是当身份验证失败时,它会弹出 Windows 安全对话框供用户登录。有没有办法阻止此对话框出现并重定向到特定的 URL 或 return 返回失败状态代码和错误消息?
我在网上搜索并找到了 OWIN 身份验证的解决方案,但没有 windows 身份验证。
在Asp.NetWebAPI中创建一个Message Handler 可以去掉WWW-Authenticateheader,这样浏览器就不会给一个popup.You即可在这个级别做很多定制。
要创建您自己的消息处理程序,您需要像下面那样扩展 DelegatingHandler
public class MyHandler : DelegatingHandler
{
protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
//Your code goes here
var response = await base.SendAsync(request,cancellationToken);
if(response.StatusCode == HttpStatusCode.Unauthorized)
{
// remove WWW-Authenticate from the header and add Location header to redirect to a page
OR
// Create a new response and then return that response
}
return response;
}
}
我正在构建一个 MVC5 Web 应用程序,其中 Web API2 用于后端服务器调用,Angularjs 用于客户端代码。该应用程序正在使用 windows 身份验证。对于 Web API 控制器中的某些方法,我已经为特定用户角色设置了 Authorize 属性。问题是当身份验证失败时,它会弹出 Windows 安全对话框供用户登录。有没有办法阻止此对话框出现并重定向到特定的 URL 或 return 返回失败状态代码和错误消息?
我在网上搜索并找到了 OWIN 身份验证的解决方案,但没有 windows 身份验证。
在Asp.NetWebAPI中创建一个Message Handler 可以去掉WWW-Authenticateheader,这样浏览器就不会给一个popup.You即可在这个级别做很多定制。
要创建您自己的消息处理程序,您需要像下面那样扩展 DelegatingHandler
public class MyHandler : DelegatingHandler
{
protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
//Your code goes here
var response = await base.SendAsync(request,cancellationToken);
if(response.StatusCode == HttpStatusCode.Unauthorized)
{
// remove WWW-Authenticate from the header and add Location header to redirect to a page
OR
// Create a new response and then return that response
}
return response;
}
}