我有一个 Symfony 应用程序,它使用 mysql 数据库来存储会话数据,并使用 SfGuard 插件来管理身份验证。尽管 symfony 总是将身份验证信息保存在 cookie 中。无论如何我可以禁用cookie并将身份验证信息存储在数据库或内存中吗?将来我可能需要一种单点登录功能,其中身份验证状态将在不同域中的多个应用程序之间持续存在。这就是为什么我主要想消除使用 cookie 的需要。
谢谢您的帮助。
我有一个 Symfony 应用程序,它使用 mysql 数据库来存储会话数据,并使用 SfGuard 插件来管理身份验证。尽管 symfony 总是将身份验证信息保存在 cookie 中。无论如何我可以禁用cookie并将身份验证信息存储在数据库或内存中吗?将来我可能需要一种单点登录功能,其中身份验证状态将在不同域中的多个应用程序之间持续存在。这就是为什么我主要想消除使用 cookie 的需要。
谢谢您的帮助。
您似乎不了解会话是如何工作的。
发送给 cient 的 cookie 称为会话 id,它对访问者是唯一的。当他从服务器请求一个页面时,cookie 会识别会话表中他的数据所在的行 - 除了 ID 之外,没有任何数据会发送到客户端。
如果没有该 ID,就无法将请求与会话数据配对,这就是您在禁用 cookie 后无法再登录的原因。cookie 的替代方法是通过其他方式传递会话 id,例如在 url - php 可以自动执行此操作,您只需use_trans_sid
在 php.ini 中启用。
是的,您可以将身份验证信息存储在数据库中:请参见此处。