【发布时间】:2016-02-18 21:42:59
【问题描述】:
我有以下场景:
- MVC 应用程序 - 安装了 Identity 的 ASP.NET MVC 应用程序。
- SPA 应用 - Angular SPA 应用,位于 MVC 应用内的某个区域。
- Web API - SPA 应用程序使用的 ASP.NET Web API 服务。
MVC 应用程序和 Web API 都应该使用相同的用户帐户。所以,现在,我在 MVC 应用程序中安装了 Identity。其中会有一个视图,它将加载 SPA 应用程序,并且 SPA 应用程序将向 Web API 发出请求。但是 Web API 只有在用户通过身份验证后才能工作,因此它需要客户端发送的 Bearer Token。因此,当用户在 MVC 应用程序中通过身份验证并使用 SPA 应用程序打开视图时,我应该以某种方式为在 MVC 应用程序中经过身份验证的同一用户获取令牌,将其放在 SPA 应用程序中,然后从SPA 应用程序 JavaScript 到 Web API。
这可能吗?还是有更好的方法?
【问题讨论】:
-
MVC和Web API可以共享cookie吗?换句话说,它们是否在同一个域中?
-
@Win - Web API 是否只允许使用 Token 身份验证?
-
可以,但是您希望在 Web API 和 MVC 之间共享身份验证。使用基于 cookie 的 ASP.Net 身份更容易,这是我验证 AngularJS SPA 的方式。
-
您可以尝试查看 Owin dll,它提供了一种使用 GetOwinContext().GetUserManager() 访问 UserManager 对象的方法。你可能想看看这个解决方案来帮助你,以防万一:stackoverflow.com/questions/24001245/…
-
@Yulian 你有什么好的解决方案吗?谢谢
标签: angularjs asp.net-mvc authentication asp.net-web-api token