首页 文章

AngularJS ASP.NET Web API ASP.NET MVC身份验证

提问于
浏览
18

我是AngularJS的新手,并试图为我的新Web应用程序评估它 .

要求:

我将有一个ASP.NET Web API,它将从Android,iPhone和Web应用程序(ASP.NET MVC)中使用 . ASP.NET Identity将在Web API中实现 . 所有三个应用程序都将调用Web API的登录方法来获取身份验证令牌 .

问题:

我的问题是如何使ASP.NET MVC server side authentication 工作(与Web API同步,所以我不必单独登录ASP.NET MVC),而Angular调用获取HTML模板/视图,JavaScript文件或其他资源 . 我已经浏览了很多关于AngularJS的文章和博客,但仍无法找到符合我要求的安全模型 .

可能的解决方案:

最好是直接对ASP.NET MVC应用程序而不是Web API进行登录调用,并且ASP.NET MVC应用程序会调用Web API进行登录,并且一旦通过身份验证,就会在会话中保存身份验证令牌并创建一个 FormsAuthentication cookie 并在cookie数据中保存加密的身份验证令牌 . 此外,在HTML中的某处设置 auth token in ng-init 以在AngularJS范围内拥有令牌 . 现在,当AngularJS尝试调用ASP.NET MVC应用程序来获取HTML时,通过将cookie解密数据与会话中的auth数据进行匹配来验证/授权用户 . 此外,AngularJS将直接发送 auth token in header to call the Web API methods 用于通过Web API进行数据操作的所有后续调用 .

3 回答

  • 4

    我用一个非常严格的前进解决方案解决了这个问题 . 我刚确定在WebApiConfig的Register方法中有两行代码:

    config.SuppressDefaultHostAuthentication();
    config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));
    

    而已 . 现在,我的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 .

  • 8

    另外值得一看:

    https://bitbucket.org/david.antaramian/so-21662778-spa-authentication-example/overview

    (基于this SO question

    警告:这不是胆小的......

    • ASP.NET Web API 2

    • HTML5 AngularJS $ ngRoute

    • NuGet脚手架

    • Yeoman(Grunt / Bower)

    • Owin框架(OAuth 2.0)

    • CORS

  • 0

    我认为你走的是正确的道路 . 我会将令牌存储在Angular服务中,以使自己更容易(http://blog.brunoscopelliti.com/deal-with-users-authentication-in-an-angularjs-web-app) . 我需要保护MVC应用程序,它只是运行你的Angular对吗? API也是您想要保护的部分 .

相关问题