Я работал над пользовательской системой аутентификации с Symfony 2.1. После много битв с Symfony у меня есть что-то, что работает, но не полностью ...Пользовательская аутентификация Symfony2: пользователь зарегистрировался, но не прошел проверку подлинности
Задача: После входа в систему (через форму) пользователь регистрируется, но не аутентифицируется.
Контекст: Поскольку пользователи должны отправлять свои учетные данные через форму HTML, мне пришлось создать слушатель, который расширяет AbstractAuthenticationListener
.
Вопрос: Не должен ли слушатель автоматически добавить токен в SecurityContext
? Если это не так, следует ли мне это сделать вручную?
Процесс:
Пользователь отправляет свои учетные данные через HTML форму запроса
Слушатель перехватывает и работает attemptAuthentication
Слушатель называет AuthenticationManager (в реализует AuthenticationProviderInterface) Аутентифицировать метод
AuthenticationManager называет UserProvider (реализует UserProviderInterface) для получения данных пользователя от моего веб-сервиса.
UserProvider возвращает пользователя класса, реализующего пользовательского интерфейс
AuthenticationManager создает Токен реализующий TokenInterface.
AuthenticationManager возвращает токен слушателю.
attemptAuthentication возвращает слушателю фишку из метода AuthenticationManager в: аутентифицировать
Пользователь регистрируется, но не прошел проверку подлинности.
Я не показывал образцы кода, чтобы избежать перегрузки сообщения. При необходимости я отредактирую сообщение.
Когда все работает правильно, все слушатели.tryAuthentication должна сделать, это вернуть аутентифицированный токен, который, в свою очередь, происходит от аутентификацииManager.authenticate. Не нужно явно устанавливать его в security.context. Первый шаг - проверить, действительно ли токен аутентифицирован, так как в игру играют различные другие слушатели. Является ли аутентифицированный токен UsernamePasswordToken? – Cerad
Аутентифицированный токен - это экземпляр моего «CustomToken», как определено в методе authenticationManager.support. – SupaCoco
описание вашего процесса поможет мне много разобраться в рабочем процессе всего. Im, реализующий собственный поставщик аутентификации на основе BorisMorel LdapBundle, и ваш вопрос отвечал на все мои вопросы! Благодаря!! :) –