我有一个带有函数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'
如何在登录功能之后或最后一步重新配置它们?
谢谢!
答案 0 :(得分:1)
您无需修改拦截器,一旦身份验证完成,您应该在您的身份验证工厂中设置应用程序范围的标题,如下所示:
$http.defaults.headers.common['Authorization'] = "Bearer " + token;