【发布时间】:2015-03-03 04:43:25
【问题描述】:
我遇到了一些问题,不知道为什么,当我从由 FOSUserBundle 处理的应用程序中注销时,因为当前会话永远不会被破坏甚至清除在我重新登录时导致问题的原因我存储了一些数据会议。这就是我的security.yml 的样子:
security:
encoders:
FOS\UserBundle\Model\UserInterface: sha512
role_hierarchy:
ROLE_USER: ROLE_USER
ROLE_ADMIN: ROLE_ADMIN
providers:
fos_userbundle:
id: fos_user.user_provider.username_email
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
pattern: ^/
form_login:
provider: fos_userbundle
csrf_provider: form.csrf_provider
login_path: /login
check_path: /login_check
default_target_path: home
always_use_default_target_path: true
logout:
path: fos_user_security_logout
target: /
invalidate_session: false
anonymous: ~
access_control:
...
这就是session 键在config.yml 上的配置方式:
session:
# handler_id set to null will use default session handler from php.ini
handler_id: ~
cookie_lifetime: 86400
gc_maxlifetime: 600 # session will expire after 10 minutes of inactivity
gc_probability: 1
gc_divisor: 1
我在这里遗漏了其他东西?
作为这个问题的第二部分,我有一个很大的疑问,因为这对我来说是新事物,并且与 Symfony2 中垃圾收集的工作方式有关?我正在阅读docs,但我不清楚,我也不知道这是否是原因,因为当我从应用程序注销时会话没有正确销毁。对此有什么解释吗?如果我没记错的话,我的应用程序会自动注销用户,当 10 分钟没有做任何事情时,这意味着 不活动,我是对的吗?但是 GC 部分在这个配置上是如何或做什么的呢?我从 this 主题中获取了该配置,但还没有理解。
另外说明,我在私人窗口中都使用 Firefox|Chrome,因此不应该存在来自浏览器的缓存。
【问题讨论】:
-
我很好奇可能的答案,因为我在退出 fosuserbundle 时也注意到了这个问题。
-
您遇到的实际问题是什么?您说的是注销问题,但不清楚您具体遇到了什么。
-
基本上,用户的会话在退出后仍然保持活动状态。
标签: php symfony session garbage-collection