禁用站点部分的表单身份验证

时间:2012-07-12 20:56:07

标签: asp.net iis-7 forms-authentication multi-tenant nancy

我有一个在IIS7下运行的ASP.net MVC3应用程序,启用了表单身份验证。在应用程序的文件夹下还有一个共同托管的Nancy服务。

问题是,只要Nancy服务返回401(未授权)状态,请求就会自动重定向到登录页面。

有没有办法让ASP.net忽略从该文件夹返回的401错误,只返回原来的json响应?

2 个答案:

答案 0 :(得分:0)

我知道这已经过时但无论如何我都会回复。

听起来你有MVC网站的Forms Auth,并且在/nancy

下使用Nancy作为API

要在该目录路径中禁用身份验证,您可以在web.config中添加location,您很可能已经设置了Nancy来运行。

类似的东西:

<location path="nancy">
  <system.web>
    <compilation debug="true" targetFramework="4.0" />
    <httpHandlers>
      <add verb="*" type="Nancy.Hosting.Aspnet.NancyHttpRequestHandler" path="*"/>
    </httpHandlers>
  </system.web>

  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
    <validation validateIntegratedModeConfiguration="false"/>
    <handlers>
      <add name="Nancy" verb="*" type="Nancy.Hosting.Aspnet.NancyHttpRequestHandler" path="*"/>
    </handlers>
  </system.webServer>
</location>

您在这里需要做的就是允许匿名访问,这可以通过将authorization添加到system.web来完成。像这样更新system.web

<system.web>
  <compilation debug="true" targetFramework="4.0" />
  <httpHandlers>
    <add verb="*" type="Nancy.Hosting.Aspnet.NancyHttpRequestHandler" path="*"/>
  </httpHandlers>

  <authorization>
    <allow users="*"/>
  </authorization>
</system.web>

现在应该忽略该文件夹的身份验证。

答案 1 :(得分:-1)

在控制器中,您可以使用 AllowAnonymousAttribute

绘制动作(或整个控制器)
[AllowAnonymous]
public ActionResult DoSomething()
{
    return View();
}