将经过身份验证的ASP.NET Identity用户从MVC传递到Web API

时间:2016-09-08 21:08:27

标签: asp.net-mvc authentication asp.net-web-api asp.net-identity

我有一个仪表板应用程序,它由ASP.NET MVC5表示层和一个提供数据的Web API组成(通过主机应用程序中的JavaScript调用ajax)。

该应用程序托管在IIS中,前端MVC应用程序设置为应用程序,Web API应用程序设置为子文件夹(也是IIS应用程序)。

所以我的应用运行http://dashboards/app/ 并调用http://dashboards/app/api/ ...获取数据。

如果我在IIS中将这两个应用程序设置为受Windows身份验证保护,那么我可以在主机应用程序和Web API中读取登录的用户名。

我有一个新的要求,即我们有外部用户帐户,因此我设置了我的MVC应用程序以使用ASP.NET Identity,在创建新的MVC 5项目时复制示例中提供的基本代码。这适用于MVC主机应用程序,我登录,读取登录的用户名并可以看到我的仪表板,但ajax调用Web API项目失败,因为他们无法再看到用户。 HttpContext.Current.User.Identity为null,IsAuthenticated为false。

到目前为止,我的研究是因为我的MVC网站使用的是基于cookie的身份验证方法:

    app.UseCookieAuthentication(new CookieAuthenticationOptions
    {
        AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
        LoginPath = new PathString("/Account/Login"),
        Provider = new CookieAuthenticationProvider
        {....

但Web API是无状态的,正在寻找授权标头。

如何设置我的子Web API应用程序以便能够从父应用程序中读取登录用户?

0 个答案:

没有答案