使用.NET MVC / Web API,是否可以在同一解决方案的两个项目之间共享一个auth cookie?如果是这样,怎么样?

时间:2014-02-27 13:12:17

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

我的解决方案结构如下:

  • Web项目(默认,ASP.NET MVC)
  • API项目(使用WebAPI控制器的ASP.NET MVC)

当部署到服务器时,Web项目将是根目录,api项目将存在于root\api中。

我正在使用FormsAuthentication.SetAuthCookie("foo",false);在网络应用中对用户进行身份验证,因此当然在网络项目的控制器内我回读cookie时没有问题(HttpContext.User.Identity.Name

我希望能够在我的API项目中执行相同操作,当从Web项目中的页面发出ajax请求时,我可以在发送服务之前检查用户是否已经过身份验证。< / p>

这可能吗?

更新

我跟着this MSDN article在应用程序之间创建身份验证,但仍然无法在API上下文中读取我的身份验证cookie。我想知道是不是因为我在本地主机上运行,​​而网络配置中的Forms节点需要一个域名:

 <forms loginUrl="login.aspx"
        name=".ASPXFORMSAUTH" 
        protection="All"  
        path="/" 
        domain="contoso.com" 
        timeout="30" /> 

我尝试将域设置为localhost:XXXX,但这也无效。两个应用程序中的机器键都匹配。

0 个答案:

没有答案