【问题标题】:back button logout symfony2 php error后退按钮注销 symfony2 php 错误
【发布时间】:2014-08-14 20:26:57
【问题描述】:

我正在开发一个 Symfony2 应用程序,但我遇到了问题。

当我退出我的应用程序时,它会正确执行,但如果我按下浏览器的后退按钮,我会返回到已登录的页面。

如果我写 URL 去这个页面,我不能。

提前致谢

这是我的 Security.yml

security:
encoders:
    Simple\ProfileBundle\Entity\User:
        algorithm:        sha1
        encode_as_base64: false
        iterations:       1


role_hierarchy:
    ROLE_ADMIN:       [ROLE_USER]


providers:
    main:
        entity:
            class: Simple\ProfileBundle\Entity\User
            property: username

firewalls:
    secured_area:

        pattern:    ^/
        anonymous: ~
        form_login:
            login_path:  login
            check_path:  login_check
            always_use_default_target_path: true
            default_target_path: /logged/portada
        logout:
            path:   /logout
            target: /portada
access_control:
       - { path: ^/logged, roles: ROLE_ADMIN }

【问题讨论】:

  • 您检查过是否取消了 $_Session/cokkie 或任何允许您留在其中的变量?
  • 是的,我取消了所有 cookie 并销毁了会话,但它仍然会返回。我想这可能是因为浏览器缓存,但我无法停用它。
  • 您的security.yml 文件是什么样的?你真的关注了 Symfony 文档中的the instructions relating to security,还是只是编写了自己的安全应用层?如果 Symfony 不承认某些路由或路径是安全的,Symfony 会告诉浏览器缓存页面。
  • 该页面很可能已被您的浏览器缓存。没有实际请求发送到服务器,因此您无法阻止这种行为。
  • 所以我什么都做不了??

标签: php symfony button logout back


【解决方案1】:

我刚刚在我自己的 Symfony 2.3 应用程序中成功测试了您的场景,发现它实际上是来自浏览器缓存的安全漏洞(不是框架问题,因为它超出了框架的控制范围。)

这是discussion around the issue。一般(但不完整)的解决方案是发送“过期”标题,当您使用后退按钮行为时浏览器可能(或可能不会)注意。 Here's the Symfony docs for HTTP Cache headers

我还没有在 2.5.* 环境中测试它,所以这可能已经在更高版本的 Symfony 中解决了。

【讨论】:

  • 感谢您的帮助。我是 Symfony 的新手,我不知道它为什么会失败。
猜你喜欢
  • 2012-05-12
  • 2011-08-05
  • 2015-07-11
  • 2013-09-21
  • 2011-03-01
  • 2023-03-29
  • 1970-01-01
  • 2013-12-11
  • 2011-03-26
相关资源
最近更新 更多