@noneim

Symfony 2 Авторизация по API?

В настоящее время в Symfony порядок авторизации и аутентификации такой:
1) UserProviderInterface::loadUserByUsername($username) возвращает объект с информацией о клиенте.
2) Затем по данным этого объекта (соль, пароль) выполняется сравнение введенного пароля и собственно процесс логина пользователя.
Но это ведьсовсем нелогично! Есть внешний api, который возвращает информацию о юзере только в том случае, если передать правильный пароль (в метод AuthClient) или хеш пароля (в метод getClientInfo и некоторые другие).
Собственно вопрос - как в symfony реализовать подобное? Т.е. в моем случае loadUserByUsername($username) - недостаточно одного $username, чтобы загрузить информацию о клиенте, необходим или пароль (если клиент логинится) или хеш пароля (если клиент уже залогинен, хеш обычно сохраняется сохранялся в сессии, когда использовался свой самописный фреймворк)
  • Вопрос задан
  • 352 просмотра
Пригласить эксперта
Ответы на вопрос 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Все можно переопределить под себя. Но все же, давайте чуть чуть подумаем. У нас есть два процесса - авторизация, когда пользователь вводит креды, и аутнефикация - для всех последующих запросов. Для аунтефикации должно быть достаточно только loadUserByUsername, не будете же вы хранить незашифрованный пароль пользователя.

Для авторизации вы сами можете определить как забирать пользователя из юзер провайдера.

В целом же, если внешнее API было бы вашим, я бы рекомендовал использовать oauth2.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы