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