2016-04-29 11 views
0

を通じてBackpagingに私は以下のように定義ミドルウェア・グループを持っていますそのサイトをもうナビゲートできなくなります。Laravel認証は歴史

ブラウザの履歴はバックスペースでサイトを後方にナビゲートできますが、リンクをクリックしてサイトをナビゲートしようとすると蹴飛ばされるという問題があります。

例としては、ホームページ上のImをクリックしてからログアウトします。私はバックスペースをクリックし、ホームページに戻ります。私はホームページのリンクをクリックしようとしますが、私は認証される必要があります。私は追い出されます...しかし、私はホームページに戻るために私の歴史に裏口を置くことはできません。

これが明確でない場合は、さらに詳しく説明したり、より多くのコードを証明したりすることができます。私はLaravelになっています5.0

+0

これは、通常、いくつかのミドルウェアからキャッシュ制御ヘッダーを設定することで修正できます。 '$ response-> headers-> set( 'Cache-Control'、 'no-cache、no-store 、max-age = 0、must-revalidate '、true);' – Jacco

答えて

0

ほとんどの場合(すべてではない場合)、戻るボタンを押しても新しい要求がトリガーされません。そのため、ロックアウトを実装する唯一の方法は、Javascriptその風味)。

ブレードとマスターレイアウトを使用している可能性が高いので、サイト全体の各ページにウィンドウの変更を検出するJavascriptを含めるだけです。 (再)エントリでは、ログイン状態に基づいてtrue/falseを返すAjax呼び出しをサーバーに送信します。ログインしていない場合は、JSを使用してログインページにリダイレクトします。

JSの知識があれば誰でも、この「チェック」を簡単に回避できますが、ほとんどのユーザーにとってサイトの目的に役立ちます。幸運なことに、これはすべて、ユーザーがログインする前に見たとおりのページを正確に見ることができるということです。その時点ではセキュリティ上の意味はありません。

+0

これは良い仕事のようですが、私はそれを試し、うまくいくかどうかを知らせますが、クライアント側の実装であるため修正します。感謝:-) – Mikecit22

1

これはLaravelの問題ではありません。これは単にWebブラウザの動作です。

ログアウト後に保護されたページへのリンクをクリックしたように、Laravelミドルウェアが完全に機能することを意味するアクセス拒否が発生します。

JavaScriptを使用して、このブラウザの動作をクライアント側で制御できると思います。

それとも

あなたがコンテンツをキャッシュしてはいけません、ブラウザを知らせるすべての制限区域のヘッダを変更することができます。

それとも

あなたがキャッシュにしたくない全てのページのHTMLのheadタグにこれを追加することができます。

+0

これは素晴らしい情報です。ありがとうございます。問題はあなたが正しいとキャッシュされていることです。私はメタタグを試しましたが、問題は持続するようです。キャッシュを知っているのは、ログアウトしてからキャッシュをクリアすると、リダイレクトがトリガーするためバックページできなくなるからです。私はこれで周りを遊ばなければならないでしょうが、キャッシュされたビューについての正しい道に私を指摘してくれてありがとう:-) – Mikecit22