【问题标题】:Authentication In MVC & WebAPI WebsiteMVC 和 WebAPI 网站中的身份验证
【发布时间】:2014-02-17 19:37:29
【问题描述】:

我有一个使用简单表单身份验证的网站,通过数据库验证凭据。它工作正常。在我的<system.web> web.config 中我有:

<authentication mode="Forms">
    <forms loginUrl="~/Account/Login" timeout="2880" />
</authentication>  

我现在需要向站点添加一个小型 WebApi 控制器,以便应用程序从中提取对象列表。看起来,就 WebApi 身份验证而言,基本身份验证就可以了。我将在应用程序中拥有用户凭据,这些凭据可以轻松传递,并在请求标头中进行编码。

我的问题是区分 MVC 和 WebApi 身份验证。首先,我的解决方案是一个好主意,并且易于实施吗?目前,在我的WebApiConfig.cs 我有:

GlobalConfiguration.Configuration.MessageHandlers.Add(new BasicAuthenticationHandler(new AuthenticationService()));

BasicAuthenticationHandler 在标头中查找凭据。但是,使用 MVC 表单身份验证,我根本无法到达该区域。当我在提琴手中点击操作时,我可以看到它直接将我重定向到 MVC 帐户/登录页面。如何避免我的 WebAPI 调用重定向?

感谢您的指导。

【问题讨论】:

    标签: c# asp.net-mvc authentication forms-authentication basic-authentication


    【解决方案1】:

    嗯,看起来这是一个简单的修复。我上面的 web.config 代码之后的直接行看起来像:

      <authentication mode="Forms">
        <forms loginUrl="~/Account/Login" timeout="2880" />
      </authentication>
      <authorization>
        <deny users="?" />
      </authorization>
    

    看起来authorization 元素完全覆盖了我拥有的任何[AllowAnonymous] - 匿名访问的唯一可能方法是登录页面。删除这 3 行完全解决了我的问题 - 我现在为我的 WebAPI 页面使用 [AllowAnonymous] 属性,它正确地应用了基本身份验证。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-20
      • 1970-01-01
      • 2016-06-17
      • 2017-08-15
      • 2014-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多