0

Web アプリケーションに laravel を使用しています。

ログイン ルートは 2 つのメソッドで処理されます
。LOGIN::GET -> フォームを使用してログイン資格情報を取得するページを表示します。
LOGIN::POST -> 投稿されたデータを取得し、認証を行い、認証情報が有効な場合は管理者のホームページにリダイレクトします。

ログアウトは、セッションをクリアして、Login::Get にリダイレクトするだけです。

管理ルートには、認証を行う before フィルターがあります。ユーザーがログインすると、管理者のホームページが表示されます。

次の手順を実行すると、問題がポップアップ表示されます。
ステップ 1: ログイン ページにアクセスし、資格情報を入力して送信します。
ステップ 2: 資格情報が検証され、管理者のホームページが表示されます。
ステップ 3: 喜んでアプリケーションからログアウトし、ログイン ページを表示します。
ステップ 4: 戻るボタンを押します。問題が発生しました。管理者のホームページが表示されています。

しかし、ログアウトした後、管理者のホームページ URL を入力して入力すると、正しくログイン ページにリダイレクトされます。これはブラウザの戻るボタンでのみ発生します。

これがブラウザのキャッシュの問題である場合、どうすれば制御できますか? 戻るボタンを押しても before フィルターをトリガーするにはどうすればよいですか?

4

3 に答える 3

0

ここで私の完全な回答を確認できます: https://stackoverflow.com/a/26560336/434790

タグの直前に、ベース テンプレートの JavaScript コードを少し追加して、この問題を解決しようとしました。

<script type="text/javascript">
    $(document).ready(function() {
        var isAuth = "<?php echo Auth::check(); ?>";

        if (location.href === 'http://local.myapp.in/login/')
        {
            if (isAuth) location.href('/home');
        }
        else
        {
            if (!isAuth) location.href('/login');
        }
    });
</script>

上記のコードで、http://local.myapp.in/login/をログイン ページの URL に置き換えます。したがって、ページが読み込まれるたびに、このコードが実行されます。ユーザーがログインせずに制限されたページにアクセスしようとすると、ログイン ページにリダイレクトされます。また、ユーザーがログイン時にログイン ページにアクセスしようとすると、ブラウザはホームページにリダイレクトされます。

これは js コードであるため、ページがブラウザーのキャッシュから読み込まれた場合でも、このコードは実行されます。

于 2014-10-25T07:49:34.100 に答える
0

codeigniter と同じ問題。ヘッダーのキャッシュ コントロールを追加する必要があります。

于 2013-08-09T02:25:37.507 に答える