2016-10-08 20 views
0

私のLaravelプロジェクトには奇妙な問題があります。シークレットタブでアプリを開くだけでログイン/ログアウトできます。そして、通常のタブでは、私がすでにログインしていて、私がログインすることができなかったストレージのセッション情報を削除した後、私はログアウトしません。Laravelはシークレットタブでしかログインできません

私はWWW上Laravel名士でログインできないことで別の問題があったので*サブドメイン。ENVで以前SESSION_DOMAINを設定するが、それは問題を解決していなかったので、後に、SESSION_DOMAINプロパティを削除しました。

UPDATE

私が.envファイルに設定されているとSESSION_DOMAINしているため、問題が発生しているようです。ローカル環境でログインしているときにシークレットタブを開いていても問題が発生します。シークレットページをいったん削除してから再読み込みしても、シークレットタブで問題が消えてしまいます。

答えて

2

私はLaravelを使用していませんでしたので、SESSION_DOMAINがどのように動作するのかを完全には理解できないかもしれませんが、問題は上位ドメインに設定された既存のCookieによるものと思われます。

たとえば、コードはドメイン 'sales.domain.com'で作業しています。 Laravelでセッションを作成すると、そのドメインで有効なCookieが作成されます。その後、同じ「Cookie設定」リクエストを使用して削除できますが、過去に日付が付けられています。これが正常に動作する方法です。

しかし、以前の誰か(おそらくあなたのコード)が同じ名前のCookieを設定していても、すべてのサブドメインまたは '.domain.com'で有効なCookieを設定してもそのCookieを削除することはできませんそれを 'sales.domain.com'から削除します。

これを確認するには、FirebugまたはChromeの開発ツールを使用して、「sales.domain.com」と「domain.com」へのリクエストを行う際にリクエストヘッダを確認します。 「Cookie」ヘッダーに注意してください。両方のリクエストに同じCookieが存在する場合、これは私の推測を確認します。これを解決するには、ブラウザのクッキーを消去します。

https://en.wikipedia.org/wiki/HTTP_cookie#Domain_and_Path

+0

を参照してくださいと、ブラウザのCookieをクリアするようにユーザーを強制する方法はありますか? – naneri

+0

私は、ユーザーに実行を依頼する以外に、クッキーをクリアする方法はないと思います。しかし、上位のドメインを管理し、そこにコードをデプロイできるなら、そこにログアウトスクリプトを置いてそこにあるクッキーを削除することができます。別の方法として、コードやPHPの設定をセッションごとに異なるクッキー名を使用するように変更することもできます(これはLaravelに固有のことかもしれませんが、 – astax

関連する問題