1

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

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

    ...

]

登录后,我更新$http's factory 以使用每个请求标头中定义的令牌。

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'

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

谢谢!

4

1 回答 1

1

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

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

于 2013-10-21T20:13:41.650 回答