【发布时间】:2017-06-24 12:11:27
【问题描述】:
我正在尝试在这个项目中实现 JWT 令牌。为此,我在$resource 中使用了授权标头,就像这样。
当我以 UI 状态“A”登录时,在登录后,我将令牌放入 localStorage 中
$localStorage.token = data.token;
当我转到页面的 UI 状态“B”时,它使用以下服务并发送没有令牌的请求。但是在刷新页面时,它会使用令牌发送相同的请求。
angular.module('BlurAdmin')
.factory('valueService', ['Token','$localStorage','$resource', 'endpoint', function(Token,$localStorage, $resource, endpoint) {
return {
getValues: $resource(endpoint + '/admin/getvalues', null, {
'get': {
method: 'GET',
headers:{'Authorization':'Bearer '+$localStorage.token}
}
}),
}
}]);
我认为该服务最初会存储 $localStorage.token 值,即使状态发生变化也会使用它。但是当页面重新加载时,它会再次获得$localStorage.token 值。
如何在每次 UI 状态更改时强制此服务获取 $localStorage.token 值?
提前致谢!
【问题讨论】:
-
它正在处理 get 请求,但是当我发送 post 请求时,我收到它不是构造函数的错误。我现在标记为正确的一个解决方案需要更少的工作,因为我不需要在我的控制器中进行更改,而只需更改服务中的一行。希望你能理解。你的也是正确的,所以我也赞成:)
-
嗯,将代码更改为
method: 'POST'在这里效果很好。该解决方案独立于您使用的HTTP-Method。两种解决方案(另一个答案)都工作得很好。我了解其他解决方案与您之前尝试过的解决方案更相同。请记住,其他解决方案仅适用于设置标题。例如method: $localStorage.method将不起作用。干杯
标签: angularjs angular-ui-router jwt angular-services angular-local-storage