Symfony 4 как перенаправить анонимного пользователя обратно на домашнюю страницу? - PullRequest
0 голосов
/ 10 июня 2019

Я использую json_login для формы входа в систему, так что это делается с помощью ajax на модальной, а не на реальной странице входа.

Вместо отображения страницы с отказом в доступе 403 при попытке получить доступ к ограниченному URL, какМогу ли я перенаправить пользователя обратно на базу /?

РЕДАКТИРОВАТЬ: я говорю, что пользователь входит в систему с json_login, что все в порядке.Но если я вышел из системы и попытался получить доступ к защищенной области как анонимный пользователь, он просто показывает страницу «Отказано в доступе», мне нужно, чтобы она не отображалась и перенаправляла на домашнюю страницу.

Так что, если я являюсь анонимным пользователем и пытаюсь получить доступ к защищенной области, такой как / admin, все, что я получаю, - это ужасная страница с отказом в доступе.Я хочу, чтобы он просто перенаправлял на домашнюю страницу, независимо от того, вошел ли пользователь в систему как пользователь без правильных разрешений или анонимный пользователь пытается получить доступ к закрытой области, а не просто оставить их на странице запрещенного доступа.

Я не могу найти ничего, что объясняет, как это сделать, access_denied_url не работает для анонимных пользователей.

ЗДЕСЬ МОЙ security.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

1 Ответ

0 голосов
/ 10 июня 2019

вы можете сделать это, используя javascript, когда получите ответ от ajax-запроса, например:

window.location.replace ("http://stackoverflow.com");

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...