2

は、私が今、2日間立ち往生し、ここに私の問題ですしてきた期待通りに動作しません私は何が起こっているのか把握する責任があります。 memcached(AWS elastic cache)によって処理されたセッションで、AWS ELBの後ろにlaravelアプリを設定しました。時々すべてがうまくいくし、奇妙なことが起こります:Laravelアプリは

ユーザーがログインすると、アプリ内をナビゲートし、何かをしてログインページを表示します。問題は、アドレスバーから/ loginを削除し、/ homepageに置き換えたときに、いくつか試行した後です。ログインしなくてもアクセスできないホームページが表示されます。これは、ユーザーがログアウトしていないことと、何かが正しく設定されていないことを示しています。

これを調べると、私が公式化できる最良の説明です: Laravelには、認証に関連するタスクを処理するCatalyst/Sentryパッケージがあります。ユーザーがログインすると、そのIP(この場合はELB'ip)が保存され、elb'sのIPが変更されているため、ELBのIP変更が発生した後にユーザーがリンクをクリックすると、アプリケーションはその要求を無効私は大声で考えています)、ユーザーにログインページを表示します。

これは一般的な問題ですか?もしそうなら、どうすればこの問題を解決できますか?

ご迷惑をおかけして申し訳ありません。どうもありがとうございました。

+0

未知の - おそらく*間違った*、または少なくとも準最適な解決策は[スティッキセッション]を有効にします(http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/elb-sticky-実際に見つけて修正するまで、おそらく問題を隠すでしょう。 ELBは 'X-Forwarded-For'ヘッダーをクライアントIPに設定していますので、あなたの理論が正しいとすれば解決策があるはずですが、Laravelは私の専門知識の範囲外です。私はあなたがこれに遭遇した最初の人ではないと思うし、おそらくもっと正しい解決策があるだろう。 –

答えて

1

こちらはmemcachedのようになります。 sentryが有効なユーザーであるかどうかを識別するために使用するのは、persist codeと呼ばれるものです。私の襲撃が正しいとすれば、あなたのpersist codeは明確な理由なしに変更されます(memcached不正行為を除く)。代わりにredisを使用して、完全に動作します。