如何注入服务来监控身份验证和存储状态?

时间:2015-05-06 17:20:23

标签: javascript angularjs restangular

我正在使用Angular.js使用Restangular构建客户端应用程序。 问题是,我使用wsse头实现了摘要式身份验证,我必须在每次向REST服务器发出请求时生成。

我看到Restangular提供了一个函数:addFullRequestInterceptor()。

所以现在,我正在尝试在RestangularProvider中使用它来配置它在这个文件restangular.js中:

// Config Restangular
app.config(function(RestangularProvider) {
  RestangularProvider.setBaseUrl(applicationConfig.SERVER_URL);
  RestangularProvider.setDefaultHeaders({'Content-Type': 'application/json'});
  RestangularProvider.addFullRequestInterceptor(
    function (element, operation, route, url, headers, params, httpConfig) {

      // Here is my header generation.
      $http.defaults.headers.common['X-WSSE'] =
        TokenHandler.getCredentials(
             AuthHandler.authentication.user.username,
             AuthHandler.authentication.secret); 

      return {
        element: element,
        headers: headers,
        params: params,
        httpConfig: httpConfig
      };
   });
});

但是我有一个注射问题而且我找不到如何注射我的TokenHandler服务&我的AuthHandler服务能够知道用户是否已经登录,以及他是否有localstroage。

感谢您的帮助;)

1 个答案:

答案 0 :(得分:1)

问题是在.config阶段,服务(如AuthHandlerTokenHandler尚未实例化,因此您需要使用{{}手动实例化它们(及其依赖项) 1}}(可注入$injector块):

config