Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.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
Symfony 4如何将匿名用户重定向回主页?_Symfony_Symfony4 - Fatal编程技术网

Symfony 4如何将匿名用户重定向回主页?

Symfony 4如何将匿名用户重定向回主页?,symfony,symfony4,Symfony,Symfony4,我使用json_登录作为登录表单,因此它是由ajax在模式上完成的,而不是实际的登录页面 在尝试访问受限url时,如何将用户重定向回base/,而不是显示403拒绝访问页面 编辑:我想说的是,用户使用json_登录登录,这很好。但是,如果我注销并尝试以匿名用户身份访问安全区域,它只会显示一个拒绝访问的页面,我需要它不显示该页面并重定向到主页 所以,如果我是匿名用户,并且我试图访问一个安全区域,比如/admin,那么我得到的只是一个可怕的拒绝访问页面。我想把它重定向到主页,不管用户是以没有正确权限

我使用json_登录作为登录表单,因此它是由ajax在模式上完成的,而不是实际的登录页面

在尝试访问受限url时,如何将用户重定向回base/,而不是显示403拒绝访问页面


编辑:我想说的是,用户使用json_登录登录,这很好。但是,如果我注销并尝试以匿名用户身份访问安全区域,它只会显示一个拒绝访问的页面,我需要它不显示该页面并重定向到主页

所以,如果我是匿名用户,并且我试图访问一个安全区域,比如/admin,那么我得到的只是一个可怕的拒绝访问页面。我想把它重定向到主页,不管用户是以没有正确权限的用户身份登录的,还是匿名用户试图访问受限区域——而不仅仅是将他们留在一个死访问拒绝页面上

我找不到任何解释如何做到这一点的东西,访问被拒绝的url不适用于匿名用户

这是我的安全。yaml:

security:
    # https://symfony.com/doc/current/security.html#where-do-users-come-from-user-providers
    access_denied_url: /
    providers:
        # used to reload user from session & other features (e.g. switch_user)
        chain_provider:
            chain:
                providers: [app_user_username, app_user_email]
        app_user_username:
            entity:
                class: App\Entity\User
                property: username
        app_user_email:
            entity:
                class: App\Entity\User
                property: email
    firewalls:
        dev:
            pattern: ^/(_(profiler|wdt)|css|images|js)/
            security: false
        main:
            anonymous: ~
            user_checker: App\Security\LoginChecker
            provider: chain_provider
            json_login:
              check_path: /login
            logout:
              path: /logout
              target: /

            # activate different ways to authenticate

            # http_basic: true
            # https://symfony.com/doc/current/security.html#a-configuring-how-your-users-will-authenticate

            # form_login: true
            # https://symfony.com/doc/current/security/form_login_setup.html

    # Easy way to control access for large sections of your site
    # Note: Only the *first* access control that matches will be used
    access_control:
        - {path: ^/extranet/.*, roles: [ROLE_CLIENT,ROLE_DELTA]}
        - {path: ^/customer/^register, roles: [ROLE_CUSTOMER]}
        - {path: ^/account/.*, roles: [ROLE_CUSTOMER,ROLE_DELTA,ROLE_CLIENT]}
        - {path: ^/vehicles/auction/bid/[0-9]*, roles: [ROLE_CUSTOMER]}
        - {path: ^/vehciles/auction/buy/[0-9]*, roles: [ROLE_CUSTOMER]}
        - {path: ^/.*, roles: IS_AUTHENTICATED_ANONYMOUSLY}
        # - { path: ^/admin, roles: ROLE_ADMIN }
        # - { path: ^/profile, roles: ROLE_USER }

    encoders:
        App\Entity\User:
            algorithm: bcrypt
            cost: 15

当您从ajax请求获得响应时,可以使用javascript执行此操作,例如:


窗口。位置。替换(“”)

你读了吗?@ehymel是的,但它没有说我想要什么。我想说的是,用户使用json_登录登录,这很好。但是如果我注销并尝试以匿名用户的身份访问安全区域,它只会显示一个拒绝访问的页面,我需要它不显示该页面并重定向到主页。我要说的是,用户使用json_登录登录,这一切都很好。但是,如果我注销并尝试以匿名用户身份访问安全区域,它只会显示一个拒绝访问的页面,我需要它不显示该页面并重定向到主页。