как получить данные от анонимного пользователя, не дав ему доступа к веб-приложению - PullRequest
0 голосов
/ 04 августа 2020

Я работаю над проектом. это приложение поддержки. После закрытия тикета я отправляю клиенту по электронной почте форму удовлетворенности, это форма 5 звезд. Я хочу иметь возможность получать данные от пользователя и сохранять их. Пример: У Тома возникла проблема с его заказом, и наша команда устраняет проблему. После закрытия тикета. Я отправляю такую ​​форму удовлетворения: Насколько хорош был наш сервис Том, пожалуйста, оцените нас Том нажимает на 4 звезды. Вот как я сейчас пытаюсь решить проблему: Тома перенаправляют на страницу с надписью «Спасибо за доверие к нашему сервису». и рейтинг сохраняется как метод публикации, например: www.oursite.com \ thankyou \ 4 теперь должно быть легко сохранить обзор Тома на нашем сервере, но проблема: У TOM нет доступа к oursite.com , и вместо этого он перенаправляется на страницу входа. Мой вопрос: как дать Тому доступ к www.oursite.com \ thankyou только как посетитель. Это мой Контроль доступа в security.yml

access_control:
#        - { path: ^/dashBoard, role: IS_AUTHENTICATED_REMEMBERED }
        - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY, allow_if: "not has_role('ROLE_USER')" }
        - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/faq/application, roles: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/faq/category, roles: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/, role: IS_AUTHENTICATED_REMEMBERED }
        - { path: ^/api/login,      roles: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/api/getToken,      roles: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/api,            roles: IS_AUTHENTICATED_FULLY }
#           This is the Thank you page       
        - { path: ^/thankYou, role: IS_AUTHENTICATED_ANONYMOUSLY} 

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

Ответы [ 2 ]

0 голосов
/ 06 августа 2020

Разобрался как это сделать. У меня был брандмауэр, который перенаправлял меня на страницу входа каждый раз, когда я подключаюсь анонимно. это брандмауэр, о котором я говорю:

backend:

      pattern: ^/
      provider: fos_userbundle
      form_login:
                csrf_token_generator: security.csrf.token_manager
                login_path:  /login
                check_path:  /login_check
                default_target_path: dashboard
#                success_handler: my_user_log.component.authentication.handler.login_success_handler
      logout:
                path: /logout
                target: /login
#                success_handler: my_user_log.component.authentication.handler.logout_success_handler      # redirect, no_redirect, redirect_without_path
      anonymous: true

, и это брандмауэр, который мне пришлось добавить:

        api_thankyou:
            pattern: ^/mail
            security: false 
0 голосов
/ 04 августа 2020

Обратите внимание, что Symfony понижается каждый access_control один за другим . Как только он находит подходящий , он использует его и останавливает . Поэтому, когда он достигает ^/, он замечает, что все страницы аутентифицированы и перенаправляются на страницу входа

Чтобы этого избежать, путь аутентификации для страницы благодарности должен быть выше контроля доступа /^:

access_control:
#        - { path: ^/dashBoard, role: IS_AUTHENTICATED_REMEMBERED }
#           This is the Thank you page       
        - { path: ^/thankYou, role: IS_AUTHENTICATED_ANONYMOUSLY}
        - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY, allow_if: "not has_role('ROLE_USER')" }
        - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/faq/application, roles: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/faq/category, roles: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/, role: IS_AUTHENTICATED_REMEMBERED }
        - { path: ^/api/login,      roles: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/api/getToken,      roles: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/api,            roles: IS_AUTHENTICATED_FULLY }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...