2017-10-16 10 views
0

私はそれらを表示しないように保護する必要があります。つまり、ログインしないで他のページにリダイレクトしないでください。誰かがアクセスしようとすると、ログインページに戻るべきです。ラベール認証を保護するにはどうすればいいですか

私はLaravel 5.4と正規認証

php artisan make:auth 

、ログインコントローラで

protected $redirectTo = '/home'; 

とミドルウェアRedirectifAuthenticatedでを使用しています私はこのようにしようとしていますが、それは動作しません。

public function handle($request, Closure $next, $guard = null) 
{ 
    if (Auth::guard($guard)->check()) { 
     return redirect('/home'); 
     return redirect('/leadsadd'); 
     return redirect('/leadslist'); 
     return redirect('/opporadd'); 
     return redirect('/opporlist'); 
     return redirect('/accadd'); 
     return redirect('/acclist'); 
     return redirect('/selftask'); 
} 

    return $next($request); 

} 

これは機能しません。私がやっている方法は間違っていると思います。どのように私はそれを防ぐことができますし、任意のルートやURLにリダイレクトする必要があります助けることができます。 ルート

Route::get('/', function() { 
return view('auth.login'); 
}); 

Auth::routes(); 
Route::get('/home', '[email protected]')->name('home'); 

Route::get('leadsadd','[email protected]'); 
Route::get('leadslist', '[email protected]'); 
Route::any('leadview/{id}','[email protected]'); 
Route::get('leadedit/{id}','[email protected]'); 

事前に感謝します。

+3

に戻すべきであるように、あなたのルートでこれを行う必要がありますか?要求ごとに1回のみリダイレクトできます。この関数は、ユーザがログインしている場合は常に '/ home'にリダイレクトされます。他のすべてのリターンは到達不能なコードです。 – Jerodev

+0

私は、上記のように(localhost:8000 \ add、localhost:8000 \ view、localhost:8000 \ home)のような別のルートを持っていると言っています。 localhost:8000 \ homeにアクセスしようとしているときのみ、ログインページにリダイレクトされます。他はログイン要求なしで直接オープンしています。 – Hemanth

+1

ミドルウェアを使用してルートファイルに定義する必要があります。 'routes/web.php'の内容を表示できますか? – Jerodev

答えて

3
あなたべき group your routes

とそれにauthミドルウェアを追加します。認証されていないユーザーがこれらのページのいずれかを訪問しようとすると、このミドルウェアは自動的にログインページにリダイレクトされます。

Route::get('/home', '[email protected]')->name('home'); 

Route::middleware(['auth'])->group(function() { 
    Route::get('leadsadd','[email protected]'); 
    Route::get('leadslist', '[email protected]'); 
    Route::any('leadview/{id}','[email protected]'); 
    Route::get('leadedit/{id}','[email protected]'); 
}); 
+0

ありがとうございました – Hemanth

0

Laravel 5.4であなたのルートを保護するために、次の2つの方法が

一つの方法は、他の方法で結合することであるあなたのweb.phpファイル内のルートと認証ミドルウェアを添付する

Route::get('profile', function() { 
    // Only authenticated users may enter... 
})->middleware('auth'); 

でありますあなたのルートを処理するコントローラのコンストラクタのミドルウェア。

public function __construct() 
{ 
    $this->middleware('auth'); 
} 
1

あなたはこの

Route::group(['middleware' => 'auth'], function() { 
     // all authenticated users will have the access here! 
     ]]); 

、あなたは8つの別のページにリダイレクトされますどのようにあなたのRedirectIfAuthenticated.phpは元

public function handle($request, Closure $next, $guard = null) 
    { 
     if (Auth::guard($guard)->check()) { 
      return redirect('/yourdashboardorwhatever'); 
     } 

     return $next($request); 
    } 
関連する問題