Symfony 1.4 Cookie问题

4
我正在尝试找到Symfony设置Cookie的位置。当我访问我的网站(我正在使用sfDoctrineGuard插件)时,我得到了登录页面,这是预期的行为。在查看已创建的Cookie时,有一个名为“symfony”的Cookie。我找不到Symfony设置此Cookie的位置...我需要更改过期时间。
我看到setCookie被用于记住我键,但这是一个完全不同的Cookie。
另一个问题是,在Safari中,“symfony” Cookie的过期时间显示为“Session”,而不是日期/时间。
我非常确定这与sfDoctrineGuard无关,而且Symfony始终会在用户访问网站时创建一个Cookie,只需找到设置此Cookie的代码即可。
有任何想法吗?
2个回答

4
你可以在factories.yml中更改会话的超时时间。
storage:
  class: sfSessionStorage
  param:
    session_name: symfony
    session_cookie_lifetime: 60000 # number of seconds

这里有文档


这个即使用户没有登录也可以工作吗?我会试一下的,谢谢。 - John Smith
@JohnSmith 是的,cookie 用于存储会话 ID - 不管用户是否已登录都无所谓。 - Manse
在我的工厂中添加“session_name: syfmony”和生命周期参数已经解决了过期问题,它不再是会话。我不确定这是否有效,因为我正在使用PDOSessionStorage,但显然它已经生效了。谢谢。 - John Smith
@JohnSmith PDOSessionStorage 处理服务器端 - cookie 只包含会话 ID - 这个 ID 会在请求中发送到服务器 - Symfony 获取会话 ID,然后查找并查看是否有匹配的会话。PDOSessionStorage 处理服务器端的获取和设置... - Manse

2
在你的factories.yml中尝试:
all:
  storage:
    class: sfSessionStorage
    param:
      session_name:            The cookie name (symfony by default)
      session_id:              The session id (null by default)
      auto_start:              Whether to start the session (true by default)
      session_cookie_lifetime: Cookie lifetime
      session_cookie_path:     Cookie path
      session_cookie_domain:   Cookie domain
      session_cookie_secure:   Cookie secure
      session_cookie_httponly: Cookie http only (only for PHP >= 5.2)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接