如何使/ login路由仅对Symfony4中的匿名用户可用?

时间:2019-05-19 20:05:35

标签: php authentication symfony4

我的access_controll如下:

- { path: ^/login, role: IS_AUTHENTICATED_ANONYMOUSLY}
- { path: ^/, roles: ROLE_USER}

我只需要向匿名身份验证的用户授予访问路由/login的权限。

2 个答案:

答案 0 :(得分:2)

好,我找到了解决方法:

- { path: ^/login, allow_if: 'is_anonymous()'}

答案 1 :(得分:1)

好吧,即使有重定向,也有更好的变体来做到这一点。首先,您需要使用以下命令编辑security.yaml

access_control:
        - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY}
        - { path: ^/, roles: ROLE_USER}

然后将其添加到您的SecurityController::login()方法中:

if ($this->isGranted('ROLE_USER')) {
        return new RedirectResponse(
            $this->generateUrl('index')
        );
    }