Контроль доступа для метода входа в систему не работает в Symfony5? - PullRequest
0 голосов
/ 27 января 2020

Я только недавно начал изучать symfony. Я не могу ограничить доступ авторизованных пользователей к способу входа в Symfony5. Он продолжает работать, несмотря на ограничения)) Это мой security.yaml:

security:
encoders:
    App\Entity\User:
        algorithm: auto

providers:

    app_user_provider:
        entity:
            class: App\Entity\User
            property: email
firewalls:
    dev:
        pattern: ^/(_(profiler|wdt)|css|images|js)/
        security: false
    main:
        pattern: ^/api
        anonymous: lazy
        guard:
            authenticators:
                - App\Security\LoginAuthenticator
                - App\Security\JwtAuthenticator
            entry_point: App\Security\LoginAuthenticator
        user_checker: App\Security\UserChecker
        logout:
            path: api_user_logout
            success_handler: App\Security\JwtLogoutHandler
            delete_cookies:
                jwt: { path: /, domain: / }
        stateless: false

access_control:
    - { path: '^/api/login', roles: IS_AUTHENTICATED_ANONYMOUSLY && !IS_AUTHENTICATED_FULLY }

Метод контроллера:

/**
 * @Route("/login", name="login", methods={"POST"})
 * @IsGranted("IS_AUTHENTICATED_ANONYMOUSLY && !IS_AUTHENTICATED_FULLY")
 */
public function login()
{

}

/**
 * @Route("/logout", name="logout", methods={"GET"})
 */
public function logout()
{
}

/**
 * @Route("/user", name="get_user", methods={"GET"})
 * @IsGranted("ROLE_USER")
 */
public function getUserData()
{
    return $this->json([
        'user' => $this->getUser(),
    ],
        Response::HTTP_OK,
        [],
        [
            'groups' => ['api'],
        ]
    );
}

access_control работает для всех, кроме входа в систему. @IsGranted ("IS_AUTHENTICATED_ANONYMOUSLY &&! IS_AUTHENTICATED_FULLY") также не работает для моего примера. Как ограничить авторизованным пользователям доступ к методам входа в систему?

ОБНОВЛЕНО (Казалось бы - доступ запрещен, но вход и выход из системы работают.):

security.yaml:

    main:
        pattern: ^/
        anonymous: lazy
        guard:
            authenticators:
                - App\Security\LoginAuthenticator
                - App\Security\JwtAuthenticator
            entry_point: App\Security\LoginAuthenticator
        user_checker: App\Security\UserChecker
        logout:
            path: api_user_logout
            success_handler: App\Security\JwtLogoutHandler
            delete_cookies:
                jwt: { path: /, domain: / }
        stateless: true

access_control:
    -  { path: '^/', roles: [IS_AUTHENTICATED_FULLY] }

Контроллер:

/**
 * @Route("/login", name="login", methods={"POST"})
 * @Security("is_granted('ROLE_USER')", statusCode=403)
 */
public function login()
{
}

/**
 * @Route("/logout", name="logout", methods={"GET"})
 */
public function logout()
{
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...