在服务中配置工厂

时间:2013-10-21 19:48:30

标签: angularjs

我有一个带有函数auth的服务login,它登录到服务器并将授权令牌保存到变量:

myApp.factory 'auth', ['$http', ($http) ->
    @token = null
    @login = (user, pass) ->

    ...

]

登录后,我更新了$http的工厂,以便在每个请求的标头中使用已定义的令牌。

myApp.factory 'httpAuthInterceptor', ($injector, $q) ->
  request: (request) ->
    token = ($injector.get 'auth').token
    request.headers.Authorization = "Bearer " + token
  return request or $q.when request

问题是拦截器在启动时配置在顶层:

myApp.config ($httpProvider) ->
  $httpProvider.interceptors.push 'httpAuthInterceptor'

如何在登录功能之后或最后一步重新配置它们?

谢谢!

1 个答案:

答案 0 :(得分:1)

您无需修改​​拦截器,一旦身份验证完成,您应该在您的身份验证工厂中设置应用程序范围的标题,如下所示:

$http.defaults.headers.common['Authorization'] = "Bearer " + token;