我不确定是什么原因引起的, 但我的项目在开发方面一直很好。
但是当我将它上传到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等
据我所知,这并不是指任何事情......
对此有任何见解???
答案 0 :(得分:1)
这可能是因为AppFog是一种没有持久数据存储的基于云的服务。默认情况下,Laravel会为其会话使用磁盘存储。切换到在数据库中存储会话,并且应该正确维护它们。
答案 1 :(得分:0)
我对laravel3和laravel4都有类似的问题。
解决方法(虽然不推荐)是,
在会话中放入任何内容后手动使用Session::save()
。
e.g。
Session::put('foo','bar');
Session::save();
正如我发现的那样,有时laravel无法调用Session::save()
并且不会抛出任何异常或错误。