3 回答
TA贡献1995条经验 获得超2个赞
如果要在asp.net MVC网站中添加asp.net WebApi,则可能要对某些请求进行未经授权的响应。但是随后ASP.NET基础结构开始起作用,当您尝试将响应状态代码设置为HttpStatusCode时。未经授权,您将获得302重定向到登录页面。
如果您在此处使用asp.net身份和基于owin的身份验证,则可以使用以下代码来解决该问题:
public void ConfigureAuth(IAppBuilder app)
{
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/Account/Login"),
Provider = new CookieAuthenticationProvider()
{
OnApplyRedirect = ctx =>
{
if (!IsApiRequest(ctx.Request))
{
ctx.Response.Redirect(ctx.RedirectUri);
}
}
}
});
app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);
}
private static bool IsApiRequest(IOwinRequest request)
{
string apiPath = VirtualPathUtility.ToAbsolute("~/api/");
return request.Uri.LocalPath.StartsWith(apiPath);
}
- 3 回答
- 0 关注
- 1572 浏览
添加回答
举报