2

何が原因なのかはわかりませんが、私のプロジェクトは開発中にうまく機能しています。

しかし、それを AppFog にアップロードすると、突然、セッション/Auth() が保持されなくなりました。

ログインには認証が機能します。そのため、ユーザーはログインでき、自分のプロフィール ページにリダイレクトされます...そしてそこから何かを更新できます...

したがって、Auth() は明らかにセッションを保持していますが、奇妙なことに、プロファイルから離れた場所でサイトの他の場所をクリックすると、突然セッションが失われます。また、プロファイルに戻りたい場合は、再度ログインする必要があります。

これが本番環境では発生するのに、開発環境では発生しないのはなぜですか。コードベースはまったく同じです。唯一の違いは、ローカル/本番データベース設定を使用していることです。それだけです。それ以外はまったく同じです。

何がこれを引き起こしているのでしょうか?? 通常、私は php.ini などをチェックしますが、appfog では、深い管理機能にアクセスできないと思います。

セッションベースの認証からRedis /データベース認証に切り替えるだけですか??? AppFog、Laravel、または YII でこの問題に遭遇した人はいますか?

アップデート

デフォルトからデータベース セッション ストレージに切り替えると、ログインごとに複数のエントリが発生する奇妙なエラーが発生しました。もちろん、これは Auth() の試みを失敗させます。セッション テーブルの id 列の auto_increment を削除して、これを修正しました。これにより、以前はデフォルト設定で動作していた 1 つのアプリが修正されました。

問題の他のアプリはまだ動作しません。少なくとも、ログイン試行時にセッション テーブルにエントリを 1 つだけ作成していますが、何らかの理由で、そのテーブルと相互参照するためのログイン Cookie を作成していません。

Chrome コンソールで、作業中のアプリのリソースの下にある...

laravel_session -> 6

これは、セッション テーブルの id 6 を参照しているため、機能する理由です。

しかし、動作していないアプリでは.....私は持っています

laravel_session - > 41g1D4390Sd223s など

私が知る限り、これは何も言及していません....

これに関する洞察はありますか???

4

2 に答える 2

1

これは、AppFog が永続的なデータ ストレージを持たないクラウド ベースのサービスであることが原因である可能性があります。デフォルトでは、Laravel はそのセッションにディスク ストレージを使用します。セッションをデータベースに保存するように切り替えると、セッションは正しく維持されるはずです。

于 2013-08-28T06:38:39.400 に答える
0

私はlaravel3とlaravel4の両方で同様の問題を抱えていました。

回避策(推奨されませんが)は、

Session::save()セッションに何かを入れた後、手動で使用します。

例えば

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

私が見つけたように、laravel が呼び出しSession::save()に失敗し、例外やエラーがスローされないことがあります。

于 2013-08-28T04:33:24.277 に答える