没有AppFog / Laravel 3的会话

时间:2013-08-27 16:41:05

标签: session laravel laravel-3 appfog

我不确定是什么原因引起的, 但我的项目在开发方面一直很好。

但是当我将它上传到AppFog时,突然间我的会话/ Auth()不会成功。

身份验证适用于登录。 因此用户可以登录,并将被重定向到他们的个人资料页面... 从那里他们可以更新东西...

所以Auth()显然正在举行会议,但是当他们点击网站上的任何其他地方时,他们会远离他们的个人资料......他们的会话很快就丢失了。 如果他们想要导航回他们的个人资料,他们必须重新登录。

为什么会在生产中发生,而不是在发展中发生。 代码库完全相同。 唯一不同的是我使用本地/生产数据库设置,就是这样。 除此之外,其他一切都完全一样。

任何想法可能导致这个? 通常我会检查php.ini等,但在appfog上,我怀疑你可以访问任何深层管理员的东西。

我应该从基于会话的身份验证切换到Redis /数据库身份验证???还有其他人在AppFog,Laravel或YII上遇到过这个问题吗?

更新

从默认切换到数据库会话存储会产生一个奇怪的错误,即每次登录多个条目。这当然会使Auth()尝试失败。我通过删除sessions表的id列上的auto_increment来解决这个问题。这修复了我的一个应用....之前在默认设置上工作。

其他相关应用仍然无效。它至少现在只在登录尝试时在会话表中输入1个条目,但由于某种原因,它不会创建一个登录cookie来与该表进行交叉引用。

在Chrome控制台中,我在工作应用的资源下...

laravel_session - > 6

这是指会话表中的id 6,因此它的工作原理。

在非工作的应用程序中.....我有

laravel_session - > 41g1D4390Sd223s等

据我所知,这并不是指任何事情......

对此有任何见解???

2 个答案:

答案 0 :(得分:1)

这可能是因为AppFog是一种没有持久数据存储的基于云的服务。默认情况下,Laravel会为其会话使用磁盘存储。切换到在数据库中存储会话,并且应该正确维护它们。

答案 1 :(得分:0)

我对laravel3和laravel4都有类似的问题。

解决方法(虽然不推荐)是,

在会话中放入任何内容后手动使用Session::save()

e.g。

Session::put('foo','bar');
Session::save();

正如我发现的那样,有时laravel无法调用Session::save()并且不会抛出任何异常或错误。