Мне удалось бы заставить что-нибудь работать (долго и упорно
За исключением того случая, когда где-то возникает ошибка аутентификации, я бы хотел, чтобы меня перенаправили на страницу
выхода, а не на страницу входа в систему.
Я думал, что изменение файла security.yml таким образом приведет к ошибке, если возникнет исключение.
security:
firewalls:
logout:
pattern: ^/logout$
security: false
secured_area:
pattern: ^/
my_user_factory: true
form_login:
login_path: /login
check_path: /login_check
failure_path: /logout
Поскольку мой базовый код всегда работает (без реального контроля), я добавил исключение для проверки ошибки аутентификации.
class AuthProvider implements AuthenticationProviderInterface
{
//...
public function authenticate(TokenInterface $token)
{
throw new BadCredentialsException('Bad credentials
}
//...
Но я вернулся на страницу входа.
Вот трассировка:
// I arrive on the site
UserFactory.getPosition
UserFactory.getKey
UserFactory.getKey
UserFactory.create
CnamtsSecurityExtension.load
Configuration.getConfigTreeBuilder
AcmeSecurityExtension.load
Configuration.getConfigTreeBuilder
AuthProvider.__construct
AuthListener.__construct
AuthProvider.__construct
// Let's login
SecurityController.loginAction
AuthProvider.__construct
AuthListener.__construct
AuthListener.attemptAuthentication
UserToken.__construct
AuthProvider.supports
AuthProvider.authenticate
// The exception is thrown
UserToken.serialize
UserToken.unserialize
UserToken.serialize
AuthProvider.__construct
SecurityController.loginAction
// Back to the login page. I'd like to be on the logout one.
Вот весь код. Если вы удалите «throw new BadCredentialsException('Неверные учетные данные
должно работать.
Дерево Bundle:
|~src/
| |~Acme/
| | `~SecurityBundle/
| | |~Controller/
| | | |-DefaultController.php
| | | `-SecurityController.php
| | |~DependencyInjection/
| | | |~Security/
| | | | `~Factory/
| | | | `-UserFactory.php
| | | |-AcmeSecurityExtension.php
| | | `-Configuration.php
| | |~Resources/
| | | |~config/
| | | | |-routing.yml
| | | | |-security_factories.yml
| | | | `-services.yml
| | | `~views/
| | | |~Default/
| | | | `-index.html.twig
| | | | `-logout.html.twig
| | | `~Login/
| | | `-login.html.twig
| | |~Security/
| | | |~Authentication/
| | | | |~Firewall/
| | | | | `-AuthListener.php
| | | | |~Provider/
| | | | | `-AuthProvider.php
| | | | `~Token/
| | | | `-UserToken.php
| | | `~User/
| | | |-User.php
| | | `-UserProvider.php
| | |+Tests/
| | `-AcmeSecurityBundle.php
Завод:
Подробнее здесь: https://stackoverflow.com/questions/124 ... stom-secur
Мобильная версия