Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在Symfony4中使匿名用户只能访问/登录路由?_Php_Authentication_Symfony4 - Fatal编程技术网

Php 如何在Symfony4中使匿名用户只能访问/登录路由?

Php 如何在Symfony4中使匿名用户只能访问/登录路由?,php,authentication,symfony4,Php,Authentication,Symfony4,我的access\u controll看起来像: - { path: ^/login, role: IS_AUTHENTICATED_ANONYMOUSLY} - { path: ^/, roles: ROLE_USER} 我需要仅向匿名身份验证的用户授予对路由/login的访问权限。好的,我找到了解决方案: - { path: ^/login, allow_if: 'is_anonymous()'} 好的,有一个更好的变体,即使使用重定向也可以做到这一点。首先,您需要使用以下命令编辑sec

我的
access\u controll
看起来像:

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

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

好的,我找到了解决方案:

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

好的,有一个更好的变体,即使使用重定向也可以做到这一点。首先,您需要使用以下命令编辑
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')
        );
    }
也看看这里:-目前的做法是否认。因此,允许匿名访问所有路由,然后拒绝需要登录的路由,例如
-{path:^/ADMIN,roles:ROLE_ADMIN}
等需要“ROLE_ADMIN”。