web-dev-qa-db-ja.com

ユーザーがログインしていない場合はログインにリダイレクトLaravel

私はララベルに不慣れです

コントローラの__constructにコードがあります

if(Auth::check())
{
    return View::make('view_page');
}

return Redirect::route('login')->withInput()->with('errmessage', 'Please Login to access restricted area.');

それはうまくいきますが、私が欲しいのはこれらのコーディングをすべてのコントローラーに配置するのは本当に煩わしいので、このVerify Authを配置してログインページにリダイレクトするには、router.phpまたはfilters.phpを使用します。

私はフォーラムとstackoverflowのいくつかの投稿を読み、filters.phpに以下のようにコードを追加しましたが、それでも機能しません。

Route::filter('auth', function() {
    if (Auth::guest())
    return Redirect::guest('login');
});

この問題の解決を手伝ってください。

14
rkaartikeyan

Laravel 5.4

組み込みのauthミドルウェアを使用します。

Route::group(['middleware' => ['auth']], function() {
    // your routes
});

単一のルートの場合:

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

Laravel docs

Laravel 4(元の回答)

これはすでにlaravelに組み込まれています。 filters.phpauthフィルターを参照してください。 beforeフィルターをルートに追加するだけです。できればグループを使用して、保護されたルートをラップします。

Route::group(array('before' => 'auth'), function(){
    // your routes

    Route::get('/', 'HomeController@index');
});

または単一のルートの場合:

Route::get('/', array('before' => 'auth', 'uses' => 'HomeController@index'));

リダイレクトURLを変更したり、メッセージを送信したりするには、filters.phpのフィルターを好みに応じて編集します。

36
lukasgeiter

他の人が返信したことは完全に正しいです。このソリューションはLaravel 5.4向けですが、念のため、ルートに複数のミドルウェアを適用している場合は、「認証」ミドルウェアが最初ではなく最後に来るようにしてください。

このような:

Route::prefix('/admin')->group(function () {
    Route::group(['middleware' => 'CheckUser', 'middleware' => 'auth'], function(){

    });
});
0
pranavbapat

コードの繰り返しを避けるために、ミドルウェアで使用できます。 Laravelビルドインを使用している場合 Auth、直接使用できます auth 与えられたミドルウェア

Route::group(['middleware' => ['auth']], function() {
   // define your route, route groups here
});

または、単一のルートの場合、

Route::get('profile', function () {

})->middleware('auth');

独自のカスタム認証システムを構築している場合。ユーザーが認証されているかどうかをチェックするミドルウェアを使用する必要があります。カスタムミドルウェアを作成するには、次を実行します。 php artisan make:middleware Middelware_Name_Here 新しく作成したミドルウェアを登録します。

0
Kiran Maniya