我在Angular端过期时使用以下逻辑刷新我的令牌:
$rootScope.$on('oauth:error', function (event, rejection) {
if ('invalid_grant' === rejection.data.error) {
$rootScope.$broadcast('error:emitted',"User or password incorrect");
return;
}
// Refresh token when a `invalid_token` error occurs.
if ('invalid_token' === rejection.data.error) {
return OAuth.getRefreshToken().then(function (result) {
$cookies.putObject("token", result.data, true);
})
}
// Redirect to `/login` with the `error_reason`.
return $window.location.href = '/login?error_reason=' + rejection.data.error;
});
逻辑是:当用户在令牌过期时调用服务,并且令牌被动执行刷新令牌时,服务器将返回“invalid_token”。
我的$ rootScope将侦听此特定错误'oauth:error',如果是'invalid_token'类型,则会向服务器调用刷新令牌。
逻辑似乎是正确的。但是,当令牌无效时,spring会从数据库中删除令牌,而我无法执行刷新令牌。
问题是:根据OAuth2的规范,更改spring的这种行为而不是在令牌无效时删除令牌是正确的,将它保存在数据库中,这样我就可以了做一个刷新令牌?