Spring OAuth 2 Правильный способ обновить токен в AngularJS

#angularjs #spring #oauth

#angularjs #spring #oauth

Вопрос:

Я использую следующую логику для обновления моего токена, когда срок его действия истекает на угловой стороне:

     $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, чтобы вместо удаления токена, когда он недействителен, сохранить его в базе данных, чтобы я мог обновить токен?