【问题标题】:ASP.NET MVC 5 and WEB API use Same AuthenticationASP.NET MVC 5 和 WEB API 使用相同的身份验证
【发布时间】:2015-01-15 08:39:44
【问题描述】:

我正在使用 ASP.NET MVC 5 和 WEB API 模板开发一个网站。我使用此模板的个人帐户功能。但是,WEB API 有自己的帐户控制器,并使用它来控制身份验证机制。 ASP.NET MVC 5 也有自己的帐户控制器。

我如何在同一个身份验证机制中使用这两个员工。还是他们在同一个身份验证中,尽管他们使用不同的帐户控制器?

【问题讨论】:

    标签: authentication asp.net-mvc-5 asp.net-web-api2


    【解决方案1】:

    您的问题的答案相当简单。您需要两个帐户控制器,以便调用 MVC 控制器(例如浏览器)的客户端和调用 Web api 控制器(例如 ajax 请求、提琴手等)的客户端可以进行身份​​验证。

    如果两个控制器属于同一个域和应用程序,则默认情况下它们在后台使用相同的身份验证机制,即使您仍然可以覆盖此行为。

    【讨论】:

      【解决方案2】:

      根据您的问题,我认为您想在域中使用 MVC 托管您的网站,例如 www.mysite.com。如果是这种情况,那么您可以在 api.mysite.com 等子域中托管您的 Web API 项目。

      由于父域中的身份验证可以传播到子域,您可以禁用 Web API 的身份验证机制并仅使用 MVC 项目的身份验证。至少,当我将一个论坛项目作为我网站的子域托管时,这就是我通过两个 MVC 项目实现它的方式。

      【讨论】:

      • 如果我误解了,请纠正,但是如果您在 Web API 中禁用身份验证,人们将能够在未经授权的情况下访问您的 Web Api 方法。
      • 很抱歉缺少信息,但我认为 OP 意味着表单身份验证。因此,当使用表单身份验证时,为父端生成的身份验证 cookie 也会授予对子域的访问权限。当然,Web API 方法需要身份验证,但用户也不需要对 Web API 进行身份验证。
      • 啊好吧!!谢谢你的澄清。
      猜你喜欢
      • 1970-01-01
      • 2015-09-17
      • 2015-05-15
      • 2016-06-17
      • 2015-04-05
      • 2014-06-02
      • 2015-07-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多