为了账号安全,请及时绑定邮箱和手机立即绑定

如何在不授予匿名用户访问 Web 应用程序的权限的情况下从其获取数据

如何在不授予匿名用户访问 Web 应用程序的权限的情况下从其获取数据

PHP
喵喔喔 2023-09-15 10:15:11
我正在做一个项目。这是一个支持应用程序。关闭票证后,我通过电子邮件向客户发送一份满意度表格,这是一种 5 星级表格。我希望能够从用户那里获取数据并保存它。示例:汤姆的订单有问题,我们的团队解决了问题。关闭票证后。我发送了这样的满意度表:我们的服务有多好,汤姆请给我们评分,汤姆点击 4 星。这就是我现在试图解决问题的方式:Tom 被重定向到一个页面,上面写着“感谢您对我们服务的信任”,并且评级被保存为像这样的帖子方法www.oursite.com\thankyou\4现在应该很容易将汤姆的评论保存在我们的服务器中,但问题是:汤姆无法访问oursite.com,他被重定向到登录页面。我的问题是:如何让 Tom仅以访客身份访问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 回答

?
大话西游666

TA贡献1817条经验 获得超14个赞

我想出了怎么做。我有一个防火墙,每次我匿名连接时都会将我重定向到登录页面。

这就是我正在谈论的防火墙:


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 


查看完整回答
反对 回复 2023-09-15
?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

请注意,Symfony 会逐一记录每个 access_control。一旦找到匹配的,它就会使用该匹配并停止。因此,当到达 时^/,它会注意到所有页面都已通过身份验证并重定向到登录页面


为了避免这种情况,thankYou 页面的身份验证路径应该位于/^访问控制之上:


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 }


查看完整回答
反对 回复 2023-09-15
  • 2 回答
  • 0 关注
  • 60 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信