2

我不确定是什么原因造成的,但我的项目在开发中一直运行良好。

但是当我将它上传到 AppFog 时,突然我的 session/Auth() 不会保留。

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

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

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

知道是什么原因造成的吗?通常我会检查 php.ini 等,但在 appfog 上,我怀疑您是否可以访问任何深层管理内容。

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

更新

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

有问题的其他应用程序仍然无法运行。它至少现在在登录尝试时只在会话表中创建 1 个条目,但由于某种原因,它没有创建登录 cookie 来与该表交叉引用。

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

laravel_session -> 6

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

然而,在非工作应用程序中......我有

laravel_session - > 41g1D4390Sd223s 等等

据我所知,这不是指任何东西....

对此有任何见解吗???

4

2 回答 2

1

This could be because AppFog is a cloud based service without persistent data storage. By default, Laravel uses disk storage for it's sessions. Switch to storing your sessions in the database and they should be maintained correctly.

于 2013-08-28T06:38:39.400 回答
0

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

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

Session::save()将任何内容放入 Session 后手动使用。

例如

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

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

于 2013-08-28T04:33:24.277 回答