Size: a a a

2021 September 10

МФ

Максим Федоров... in symfony
firewalls:
       main:
           anonymous: true
           lazy: true
           form_login:
               login_path: login
               check_path: login
источник

АС

Александр Семикашев... in symfony
в AuthenticationEntryPoint implements AuthenticationEntryPointInterface

public function start(Request $request, AuthenticationException $authException = null): Response
   {
       return new RedirectResponse($this->urlGenerator->generate('login'));
   }

Но у меня кастомная форма, если стандартная то выше ответ Максима
источник

AT

Adilet Tussupbekov in symfony
Вот что у меня в файерволе:
main:
 lazy: true
 provider: ldap_provider
 form_login_ldap:
    login_path: app_login
    check_path: app_login
 logout:
    path: app_logout
 custom_authenticator: App\Security\LdapAuthenticator
источник

AT

Adilet Tussupbekov in symfony
Если ввожу anonymous: true, там ошибка, что это уже не поддерживается менеджером
источник

КГ

Константин Грачев... in symfony
В App\Security\LdapAuthenticator в методе onAuthenticationFailure поди просто кидаешь исключение дальше?
источник

AT

Adilet Tussupbekov in symfony
Там просто интерфейс аутентификатора его метод вызываю, а туда вроде FormLoginAuthenticator подставляется
источник

АС

Александр Семикашев... in symfony
Так onAuthenticationFailure вызывается после неудачной авторизации. Чтобы был редирект на форму нужно entryPoint делать, разве нет
источник

КГ

Константин Грачев... in symfony
мм.. да, точняк
источник

AT

Adilet Tussupbekov in symfony
спасибо, ща в эту сторону покопаю
источник

КГ

Константин Грачев... in symfony
Кароч не помню как раньше было, я вот так на страницу логина сейчас кидаю https://github.com/automagistre/automagistre/blob/master/src/Keycloak/EventListener/ExceptionListener.php#L52
источник

АС

Александр Семикашев... in symfony
В общем  в конфиг ->entryPoint(AuthenticationEntryPoint::class)

А сам класс у меня такой

class AuthenticationEntryPoint implements AuthenticationEntryPointInterface
{
   public function start(Request $request, AuthenticationException $authException = null): Response
   {
       // делаем редирект на страницу с формой входа
       return new RedirectResponse($this->urlGenerator->generate('login'));
   }
}
источник

КГ

Константин Грачев... in symfony
хм, видимо надо переделать
источник

АС

Александр Семикашев... in symfony
@Adilet Я выкинул лишнее ещё, в нём же сохранение прошлой страницы, если надо
источник

AT

Adilet Tussupbekov in symfony
о, спасибо)
источник

МФ

Максим Федоров... in symfony
ничего не пойму, типовая штука — отправить на страницу логина, зачем EntryPoint кастомный?
источник

АС

Александр Семикашев... in symfony
В доках сказано

  // remember to also configure the entry_point if the
       // authenticator implements AuthenticatorEntryPointInterface
       // ->entryPoint(App\Security\CustomFormLoginAuthenticator::class)

Если реализуется касмтомный аутентификатор то нужно ещё entyPoint свой, я и на github искал, там всё тоже. Без entyPoint редиректа нет.
источник

АС

Александр Семикашев... in symfony
Зачем так сделали, я без понятия, но когда первый раз делала на новой версии тоже ничего не понял, долго мучился. Хотел тоже через слушателя кинуть
источник

МФ

Максим Федоров... in symfony
ну да, я с новой не работал системой еще
источник

КГ

Константин Грачев... in symfony
Если встроенный form_login используешь, то там этот метод реализован за тебя. А если сам аутентификатор пишешь, кто за тебя редиреткить то будет?
источник

AD

Andrey Dembitskyi in symfony
источник