2013-10-21 121 views
1

我有一个服务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

你并不需要修改拦截器,一旦验证完成后,你应该设置应用广泛的头在你的AUTH工厂以下:

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