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”。