表单身份验证:禁用重定向到登录页面

问题描述 投票:66回答:11

我有一个使用ASP.NET Forms身份验证的应用程序。在大多数情况下,它工作得很好,但我试图通过.ashx文件添加对简单API的支持。我希望ashx文件具有可选的身份验证(即,如果您不提供身份验证标头,那么它只是匿名工作)。但是,根据您的操作,我希望在某些条件下要求身份验证。

如果没有提供所需的身份验证,我认为用状态代码401进行响应将是一件简单的事情,但似乎Forms Authentcation模块正在拦截它并通过重定向到登录页面进行响应。我的意思是,如果我的ProcessRequest方法看起来像这样:

public void ProcessRequest(HttpContext context)
{
    Response.StatusCode = 401;
    Response.StatusDescription = "Authentication required";
}

然后,而不是像我期望的那样在客户端上获得401错误代码,我实际上正在获得302重定向到登录页面。

对于正常的HTTP流量,我可以看到它有用,但对于我的API页面,我希望401经过不修改,以便客户端调用者可以以编程方式响应它。

有没有办法做到这一点?

asp.net forms-authentication
11个回答
-2
投票

查看configuration\authentication中的Web.config文件。如果有一个带有forms属性的loginUrl子元素,请将其删除并重试。

© www.soinside.com 2019 - 2024. All rights reserved.