Hai*_*der 19 asp.net-mvc forms-authentication asp.net-web-api angularjs asp.net-identity
我是AngularJS的新手,并试图为我的新Web应用程序评估它.
我将有一个ASP.NET Web API,它将从Android,iPhone和Web应用程序(ASP.NET MVC)中使用.ASP.NET Identity将在Web API中实现.所有三个应用程序都将调用Web API的登录方法来获取身份验证令牌.
我的问题是如何让ASP.NET MVC 服务器端身份验证工作(与Web API同步,所以我不必单独登录ASP.NET MVC),而Angular调用获取HTML模板/视图,JavaScript文件或其他资源.我已经浏览了很多关于AngularJS的文章和博客,但仍无法找到符合我要求的安全模型.
最好是直接对ASP.NET MVC应用程序而不是Web API进行登录调用,并且ASP.NET MVC应用程序会调用Web API进行登录,并且一旦通过身份验证,就会在会话中保存身份验证令牌并创建一个FormsAuthentication cookie和cookie数据保存加密的身份验证令牌.此外,在HTML格式的ng-init中设置auth令牌,以在AngularJS范围内拥有令牌.现在,当AngularJS尝试调用ASP.NET MVC应用程序来获取HTML时,通过将cookie解密数据与会话中的auth数据进行匹配来验证/授权用户.此外,AngularJS将在头文件中发送auth令牌,以直接调用Web API方法,以便通过Web API进行数据操作的所有后续调用.
我用一个非常严格的前进解决方案解决了这个问题.我刚确定在WebApiConfig的Register方法中有两行代码:
config.SuppressDefaultHostAuthentication();
config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));
Run Code Online (Sandbox Code Playgroud)
而已.现在,我的MVC控制器会查找会话cookie以进行授权,而我的Web API控制器会在每个请求的标头中查找auth令牌.此外,Web API响应登录/认证请求发送令牌(JSON)和会话cookie本身,例如http:\\www.mydomain.com\token
.
所以现在我将我的登录请求发送到Web API以获取令牌以及会话cookie.每个请求都会自动发送会话cookie,因此我不必担心我的MVC控制器的授权.对于Web API调用,我在每个请求的标头中发送auth令牌,因为Web API控制器不关心与请求一起发送的会话cookie.
也值得一看:
https://bitbucket.org/david.antaramian/so-21662778-spa-authentication-example/overview
(基于这个SO问题)
警告:它不适合胆小的人......
归档时间: |
|
查看次数: |
15278 次 |
最近记录: |