banderos120
@banderos120
Играю на балалайке

Как в Symfony2 при аутентификации проверить дополнительные параметры?

В моем случае, нужно узнать статус(значение в БД) пользователя во время аутентификации, и если статус равен определенному значению, то не проводить аутентификацию и возвращать ошибку авторизации.
---
Нашел такой вариант. Так будет правильно ?
  • Вопрос задан
  • 2296 просмотров
Решения вопроса 1
banderos120
@banderos120 Автор вопроса
Играю на балалайке
Если кому интересно сделал следующим образом:
Создал свой UserChecker и переопределил checker компонента security
class SecurityUserChecker extends UserChecker
{

	/**
	 * Checks the user account before authentication.
	 *
	 * @param UserInterface $user a UserInterface instance
	 */
	public function checkPreAuth(UserInterface $user) {
		parent::checkPreAuth($user);

		if(!$user instanceof CustomUserInterface){
			return;
		}

		if($user->isDeleted()){
			$ex = new DeletedException('User account is deleted.');
			$ex->setUser($user);
			throw $ex;
		}
	}
}

security.user_checker:
        class: UserBundle\Security\SecurityUserChecker

Добавил интерфейс с одним методом проверки, удален пользователь, али нет, и унаследовал его от стандартного Security интерфейса:
interface CustomUserInterface extends AdvancedUserInterface
{
	/**
	 * @return boolean
	 */
	public function isDeleted();
}

Ну и добавил реализацию этого интерфейса в Entity User . В методе isDeleted() сделал проверку на удаление и все в принципе. Ну и свой DeletedException добавил еще.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы