繁体   English   中英

MVC和WebAPI网站中的身份验证

[英]Authentication In MVC & WebAPI Website

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

<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调用的重定向?

感谢您的指导。

好吧,看来这是一个简单的修复。 我上面的web.config代码后的直线如下所示:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM