我是AngularJS的新手,正在尝试为我的新Web应用程序评估它。
要求:
我将有一个ASP.NET Web API,将从Android、iPhone和Web应用程序(ASP.NET MVC)中使用。 Web API将实现ASP.NET身份验证。所有三个应用程序都将调用Web API的登录方法以获取认证令牌。
问题:
我的问题是如何使ASP.NET MVC 服务器端身份验证工作(与Web API同步,因此我不必单独登录ASP.NET MVC),而同时AngularJS会发出调用以获取HTML模板/视图、JavaScript文件或其他资源。我查阅了许多关于AngularJS的文章和博客,但仍无法找到符合我的要求的安全模型。
可能的解决方案:
是否将登录调用直接发给ASP.NET MVC应用程序而不是Web API会是一个好主意呢?然后,ASP.NET MVC应用程序将调用Web API进行登录,并在身份验证后将认证令牌保存在会话中,再创建一个FormsAuthentication cookie,并在cookie数据中保存加密的认证令牌。此外,在HTML某处设置ng-init中的auth token,以便在AngularJS范围内拥有该令牌。现在,当AngularJS尝试调用ASP.NET MVC应用程序以获取HTML时,通过将cookie解密后的数据与会话中的认证数据进行匹配来验证/授权用户。此外,AngularJS将为所有后续调用Web API方法的数据操作直接发送header中的auth token。