Spring OAuth 2在AngularJS上刷新令牌的正确方法

时间:2016-10-11 13:49:32

标签: angularjs spring oauth

我在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的这种行为而不是在令牌无效时删除令牌是正确的,将它保存在数据库中,这样我就可以了做一个刷新令牌?

0 个答案:

没有答案