角度基本身份验证和令牌

时间:2015-05-07 11:02:43

标签: angularjs api authentication token

我很难理解如何使用API​​处理基本身份验证。

基本上我需要做的是从API发送模块用户名和模块密码(不是用户登录)请求令牌。服务器应该返回一个令牌,我需要将该令牌用于我将对服务器发出的所有其他请求。

在互联网上看,我找到了涉及用户登录和角度路由的解决方案。 我没有使用任何路由,路由是托管服务器端,我需要在几个页面上使用API​​,然后消费我需要将令牌附加到每个请求。

我不明白如何正确启动。

我应该为第一次身份验证创建一个ajax请求,将令牌保存在某处并将其用于所有其他请求。请记住,如果令牌无效,我应该再次请求。

我对如何做到这一点很困惑,我找不到任何好的教程。

任何帮助?

1 个答案:

答案 0 :(得分:1)

我自己还在学习Angular,但希望这个基本的例子可以帮到你。您可以使用$cookies来保存和检索从服务器发回的令牌。然后,假设您使用$ http或$ resource,您可以使用$httpProvider拦截器将当前令牌值(从$ cookies中检索)添加到您的应用程序发出的每个传出请求的标头中。

这是一个如何创建$ httpProvider拦截器的简单示例:

authServices.factory('sendTokenInHeader', ['$cookies', function($cookies) {
  return {
    request: function(config) {
      var token = $cookies.getObject('x-my-token');
        if(token) {
          var updateHeaders = config.headers || {};
          updateHeaders['x-my-token'] = token;
          config.headers = updateHeaders;
         }
         return config;
    }
  };
}]);

然后在你的app.config中你需要推送这个拦截器,现在任何传出的$ http / $资源请求都将包含当前的令牌!

myApp.config(['$httpProvider', function($httpProvider) {
  // do other stuff...

  $httpProvider.interceptors.push('sendTokenInHeaders');
}]);