Проверьте, является ли токен действительным - PullRequest
0 голосов
/ 21 февраля 2020

Я использую сторонний REST API в своем приложении SYMFONY 4.3. Мое приложение требует проверки, если токен действителен перед любым запросом. Когда лучше всего проверить, является ли токен действительным, и если нет, попытаться обновить sh до запроса в symfony? Какой-либо фильтр запроса до symfony существует? или есть глобальный объект, когда я могу получить все запросы, и если заголовок равен 401, я могу выполнить конкретное c действие

Теперь у меня есть центральная точка в моем приложении, и все запросы передаются через эту функцию. Но в будущем, когда у меня будет другой запрос, не пропущенный через эту функцию, я должен сделать следующую функцию и т. Д. c ... к API "

Должен ли я использовать его? https://symfony.com/doc/current/event_dispatcher/before_after_filters.html#token - пример проверки

public function prepareRequest($method, $endPoint) {
.........

// Users can have many tokens connected to different accounts on third party app
 $apiTokens = $user->getApiTokens();

 /** @var ApiToken $apiToken */
 foreach ($apiTokens as $apiToken) {
    if ($this->isTokenValid($apiToken)) {
       ............. make request with specifed apiToken
}


 public function isTokenValid(ApiToken $token): bool
{
  if token is not valid return false
  if token date expired try to refresh token
  if token is not valid or refreshing token fails return false else return true

}

1 Ответ

2 голосов
/ 22 февраля 2020

Решение, которое я хотел бы предложить, состоит в том, чтобы использовать lexik / jwt-bundle Я использую его почти во всех моих проектах внешней аутентификации, например, вы можете настроить ответ по умолчанию (токен JWT не найден / недействителен) для возврата желаемого ответа. Вы можете создавать как анонимные истинные, так и ложные маршруты для ваших целей. Я полагаю, что анонимный должен быть истинным, даже если срок действия вашего токена истек, вы продлите его срок службы. Если вы хотите, чтобы некоторые идеи добавили комментарий к этому ответу, и я предоставлю как можно лучше

...