如何拒绝登录用户访问某个路由?

Flo*_*ran 4 php symfony symfony4

我想直接在 security.yaml 的 access_controls 中拒绝登录用户的注册/登录路由的访问

有人知道如何在文档中执行此操作吗?我没有看到那样的东西。

当前的访问控制:

access_control:

    - { path: ^/signin$, roles: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/signup$, roles: IS_AUTHENTICATED_ANONYMOUSLY}
    - { path: ^/product$, roles: IS_AUTHENTICATED_ANONYMOUSLY }
Run Code Online (Sandbox Code Playgroud)

小智 5

仅当用户在 security.yaml 中没有角色 ROLE_USER 时,您才可以添加允许的 access_control :

    - { path: ^/sign(up|in), allow_if: "not has_role('ROLE_USER')" }
Run Code Online (Sandbox Code Playgroud)

您必须添加任何 access_denied_url

    access_denied_url: /access-denied
Run Code Online (Sandbox Code Playgroud)

并添加一个带有路由 /access-denied 的控制器操作,该操作将用户重定向到路由登录(如果未登录)和配置文件页面(如果已登录):

/**
 * @Route("/access-denied", name="app_access_denied")
 */
public function accessDenied()
{
    if ( $this->getUser() ) {
        return $this->redirectToRoute('app_user_home');
    }

    return $this->redirectToRoute('app_login');
}
Run Code Online (Sandbox Code Playgroud)