有没有办法阻止 Symfony2 为某些路径发送会话 cookie?

Posted

技术标签:

【中文标题】有没有办法阻止 Symfony2 为某些路径发送会话 cookie?【英文标题】:Is there a way to stop Symfony2 sending session cookies for certain paths? 【发布时间】:2012-05-08 08:45:12 【问题描述】:

我正在实现一个 Web 服务作为 Symfony2 站点的一部分,该站点将使用来自另一个(静态)站点的 JSONp 和 iframe 进行访问。当用户使用 iFrame 登录时,Safari 不会保留会话,因此我使用 javascript 将会话 ID 存储在静态站点的 cookie 中,并将其传递回请求的 GET 或 POST 参数,这工作正常.

问题是在其他浏览器上,Web 服务的会话 cookie 被保留,这意味着当用户退出时,他们实际上仍然登录到 Symfony 站点。

有没有办法仅对 symfony 站点的 web 服务部分禁用 php 会话 cookie,最好以 Symfony2 友好的方式(而不是,例如,弄乱 .htaccess)?

我仍然想要一个会话,但会通过在我发出的所有请求中自己传递一个 PHPSESSID 变量来维护它。

【问题讨论】:

【参考方案1】:

This 可能正是您正在寻找的东西。拥有无状态防火墙:

在你的 security.yml 中

# app/config/security.yml
security:
    firewalls:
        main:
            stateless:  true

【讨论】:

我想我试过了,但它不适用于基于表单的登录或其他东西。 基于表单的啊。是的,即使在文档中它说基于表单的登录将使用会话和 cookie。我正在做一个无状态的 Web 服务,所以成功了 见:Symfony Book - Security - Stateless Authentication 哦,请确保您的 Symfony 站点不会尝试从会话中读取数据,因为这会创建会话。这被一些用户(包括我)视为一个问题,因此请在此处进行讨论:github.com/symfony/symfony/issues/6036

以上是关于有没有办法阻止 Symfony2 为某些路径发送会话 cookie?的主要内容,如果未能解决你的问题,请参考以下文章

symfony2 安全 - 禁用登录路径并显示禁止

如何配置 AWS ELB 以阻止某些 IP 地址? (已知的垃圾邮件发送者)[关闭]

window.open() 某些情况会被浏览器阻止弹出窗口及解决办法

Symfony2:控制器中动作/路由的完整路径

阻止 SonataAdmin / Symfony2 使用 sonata_type_admin 嵌入式管理员创建空对象

有没有办法让云端发送单个资源和任何路径/路由的默认根对象?