gpt4 book ai didi

session - 用户关系正在破坏我在 Symfony2 中的 session

转载 作者:行者123 更新时间:2023-12-02 05:09:02 25 4
gpt4 key购买 nike

我的用户在 Doctrine 中设置了许多关系,但其中一个似乎给我带来了很多问题,每个用户都可以有多个成员资格,每个成员资格都有一个成员资格类型。

但是由于某种原因,当我加载这些成员(member)资格时,它似乎正在破坏我的 session ,我登录并看到一个“您的帐户”页面,这是我应该做的,但是如果我刷新页面,我会被发送回登录屏幕.我的 session 存储在数据库中,所以我一直在检查它们以查看发生了什么,这就是我所看到的:

  1. session 开始时是空的
  2. 我登录但确保我被重定向到一个不加载成员(member)的页面
  3. session 现在包含用户对象和所有关系信息
  4. 我访问加载成员(member)资格的“您的帐户”,它们正确显示。
  5. session 已被取消,现在与步骤 1 中一样
  6. 我刷新页面并返回到登录页面

我已经定义了自己的用户提供程序,我注意到如果我在 refreshUser 中将每个成员资格的成员资格类型设置为 null,它就会开始工作,所以我猜测 session 在处理这种关系时遇到了问题。

我真的很难找到解决这个问题的方法,所以非常感谢任何帮助。

编辑:做了更多的实验,发现如果我切换到文件 session ,一切都会开始工作,所以它一定与在数据库中存储 session 有关。我使用 Symfony Cookbook 中的指南进行了切换。作为引用,这里是我的 config.yml 中的相关位:

framework:
session:
default_locale: %locale%
auto_start: true
storage_id: session.storage.pdo

parameters:
pdo.db_options:
db_table: session
db_id_col: session_id
db_data_col: session_value
db_time_col: session_time

session.storage.pdo:
class: Symfony\Component\HttpFoundation\SessionStorage\PdoSessionStorage
arguments: [@pdo, %session.storage.options%, %pdo.db_options%]
pdo:
class: PDO
arguments:
dsn: "mysql:dbname=%database_name%;host=%database_host%"
user: %database_user%
password: %database_password%

关于它们的其他一切似乎都很好,所以可能是 PdoSessionStorage 中的错误

最佳答案

可能是你的 equals 方法太严格了。如果你这样做 $user === $otherUser;并且对象已更改(关系不再是具有代理的集合)它将返回 false。

关于session - 用户关系正在破坏我在 Symfony2 中的 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7584485/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com