2016-12-08 40 views
0

私はlaravel 5.2でcrmアプリケーションを開発していますが、1つの問題があります。私はLaravel 5.2で正しくログアウトしていますが、前のページにアクセスできます。私がLaravel 5.2でログアウトした後、ブラウザのバックボタンログインを防ぐ方法は?laravel 5.2のブラウザの戻るボタンを防ぐ方法5.2

これはセキュリティ上の問題ではないことがわかりましたが、ブラウザの戻るボタンを使用して、前のページにアクセスできないようにしたいと考えています。私は以下のURLに記載されているソリューションを使用しましたが、それでも私のためには機能しません。 https://arjunphp.com/laravel-5-logout-and-prevent-back-button/

私は現在、自分のアプリケーションを最初から開発しています。私はちょうどLaravelのauth(php artisan make:auth)を使用してこの問題を発見し、固執しました。

+1

[すべてのブラウザでウェブページのキャッシュを制御する方法は?](http://stackoverflow.com/questions/49547/how-to-control-web-ページキャッシング全ブラウザ) –

答えて

0

これは問題ではありません。ユーザーが「戻る」をクリックすると、ブラウザは前のページをキャッシュされたバージョンとしてレンダリングします。ここで

はあなたの3つのオプションです:

  1. はそれについては心配しないでください。彼らがログインしていて以前にそれを見た場合、彼らは戻ってくると同じことを期待します。しかし、auth middlewareの他の場所をナビゲートしようとすると、ログインページにリダイレクトされます。

  2. ログアウトすると、ログインページにリダイレクトされます。

  3. これを前のURLにリダイレクトすると、auth middlewareが再び発生します。

+0

詳細な説明をありがとうございます。応答のために – Abhishek

0

誰もが言ったように、それは問題ではありません。しかし、あなたがそれを防止したい場合でも、ここであなたができることがあります。あなたのログアウト機能では、ログアウトメソッドを呼び出すと、次のようなものを使用します。

return redirect(\URL::previous()); 

私はこれを実行してこの問題を解決しました。これを試してください。 これが役立つことを願っています!

+0

ありがとう、しかしそれは動作しません。より明確にするために、ログアウト機能コードも追加しています。 公開関数logout(){ Auth :: guard($ this-> getGuard()) - > logout(); returnリダイレクト(\ URL :: previous()); } – Abhishek

+0

URL :: previous()の代わりにurl() - > previous()を試してください。その後、それが動作するかどうかを確認します。 Btw、あなたのログアウト機能はうまくいきません – LearningNew

+0

は動作しません:(私のログアウト機能は "vendor/laravel/framework/src/Illuminate/Foundation/Auth/AuthenticatesUsers"にあります。私はphp artisan make:authコマンドを使用して認証しました。 – Abhishek

0

溶液。ミドルウェアを作成します。

これは次のようになります。次

<?php 

namespace App\Http\Middleware; 
use Closure; 

class HistoryBack 
{ 
/** 
* Handle an incoming request. 
* 
* @param \Illuminate\Http\Request $request 
    * @param \Closure $next 
* @return mixed 
*/ 
public function handle($request, Closure $next) 
    { 
    $response = $next($request); 

    return $response->header('Cache-Control','nocache, no-store, max-age=0,  must-revalidate') 
    ->header('Pragma','no-cache') //HTTP 1.0 
    ->header('Expires','Sat, 01 Jan 1990 00:00:00 GMT'); // // Date in the past 


    } 
    } 

よろしく

言い訳私の英語をカーネルにミドルウェアを登録し、ルートでそれらを使用することです。私は翻訳者を使って理解しています。私はスペイン語と少しの英語しか話して理解していません

+0

応答をありがとう、しかし私はすでに私の質問でも述べたように、その解決策を試した。 – Abhishek