Symfony sfGuardPlugin会话不一致

时间:2009-06-23 22:21:02

标签: php session symfony1 sfguard

好的我在symfony的应用程序中有几个模块。我只有一个安全的模块:打开。我还有一个layout.php,它在顶部包含一个选项卡式菜单,用于显示我的应用程序中每个模块的链接。如果用户未登录,此菜单还有一个显示用户链接的部分“登录”,如果用户已登录,则显示“注销”。

当我尝试访问安全模块时:我将转发到登录页面。我可以正常登录并创建cookie。如果我转到任何其他模块,菜单会显示“退出”链接。

让我说我关闭浏览器(cookie设置为15天后过期)并再次打开浏览器,然后我转到主页模块。我应该登录但是菜单显示“登录”而不是“没有用户登录”。我尝试访问secure:on模块,然后当页面重新加载时,菜单显示“注销”链接,因为它现在读取cookie。

我发现如果设置了cookie并且我关闭浏览器并在主页重新打开它,则会有两个cookie,一个'sfRemember'和第二个'symfony'。在我访问安全模块并读取cookie之后,'symony'的cookie与主页上显示的内容完全不同 - 这意味着它不会读取相同的cookie,这就是为什么“注销”链接不会出现直到我访问安全模块。如果在我打开该安全模块后,我返回主页,应用程序就会正常读取cookie并显示“注销”。

我真的不知道如何处理这个问题。非常感谢任何帮助!

3 个答案:

答案 0 :(得分:0)

我以前遇到过这个。

我的代码正在运行,但此票证中给出的解释似乎很熟悉。

http://trac.symfony-project.org/ticket/6607

答案 1 :(得分:0)

我在那张票上尝试了解决方案,但我得到了这个:

致命错误:未找到类'sfGuardRememberMeFilter'

我正在使用symfony 1.2和最新版本的sfGuardPlugin。 Whas那班被删除了吗?同样在我的应用程序settings.yml中,我启用了以下模块,以防这对解决这个问题很有用

来自插件或来自symfony核心的激活模块

enabled_modules:[default,sfGuardAuth]

感谢您的帮助!

答案 2 :(得分:0)

可选择在filters.yml中启用“记住我”过滤器

安全性:   class:sfGuardBasicSecurityFilter