Я объясню мою проблему. Я регистрирую пользователей, используя API, передавая имя пользователя и зашифрованный пароль, поэтому я не могу загружать пользователей только по имени пользователя.
Я использую GUARD для получения информации о пользователе и авторизации пользователей для данного брандмауэра. Все идет нормально.
Моя проблема начинается, когда я хочу активировать запомнить меня. Очевидно, что пользователь не хранится в моей базе данных, но не могу загрузить пользователя по имени.
На данный момент я преодолел проблему, реализуя класс RememberMeServicesInterface и используя мой новый класс в своем классе защиты, который расширяет AbstractFormLoginAuthenticator.
Честно говоря, это похоже на взлом, так как я почти уверен, что должен быть лучший способ сделать это.
Проверяя код, я заметил, что у Symfony есть 2 класса, которые реализуют RememberMeServiceInterface, TokenBasedRememberMeServices и PersistentTokenBasedRememberMeServices, может кто-нибудь объяснить мне, как я могу также внедрить свой RememberMeService и использовать это для авторизации моего пользователя?
Заранее спасибо сообществу за помощь.
Я наконец-то нашел способ добиться привычного запоминания меня.
Вот эти шаги:
1) Создайте класс, который расширяет Symfony \ Bundle \ SecurityBundle \ DependencyInjection \ Security \ Factory \ RememberMeFactory
Этот класс переопределяет getKey () с помощью пользовательского ключа и create (), поэтому я могу добавить свой собственный сервис токенов security.authentication.rememberme.services.MYCUSTOMTOKENSERVICE
2) Создайте службу токенов, которая расширяет Symfony \ Component \ Security \ Http \ RememberMe \ TokenBasedRememberMeServices, чтобы я мог использовать свою логику аутентификации и свою пользовательскую функцию UserProvider
3) Создайте прослушиватель, который расширяет Symfony \ Component \ Security \ Http \ RememberMe \ ResponseListener
4) Связать вместе в моем сервисном файле YML
customlistener.security.authentication.listener:
учебный класс: #####
public: false
security.authentication.rememberme.services.customtokenservice:
учебный класс: ###
родитель: «security.authentication.rememberme.services.abstract» аннотация: true
5) В security.yml я использую строку, которую использовал в getKey, чтобы вызвать моего слушателя custom-запомнить-меня с теми же параметрами ключа запомнить-меня
Работал как шарм!
Других решений пока нет …