フォーラムですでに読んだこの行を案内してくれる人もいますが、ロジックをクリアしていません
array('before' => 'auth', 'do' => function()
フォーラムですでに読んだこの行を案内してくれる人もいますが、ロジックをクリアしていません
array('before' => 'auth', 'do' => function()
特定のアクションを実行する前に、ユーザーがログインしているかどうかを確認したいとします。これは、フィルターと呼ばれるものによって実行されます。「前」フィルターは、アクションを実行する前にフィルターを実行することを意味します。
フィルタの詳細については、このリンクを確認してください
例:
Route::get('home', array('before' => 'auth', 'do' => function()
{
// your action here
}));
Route::filter('auth',function(){
if(Auth::guest())
return Redirect::to('login');
});
このリンクは同じことを説明しています。わかりやすい意味は、現在の状態が「認証前」の場合、機能を実行することです。
投稿しようとしたときに、ログインしていない場合は、function()
ログイン目的を実行する場所にリダイレクトされます。auth
これがイベントで、function
イベントハンドラーです
これは、「コールバックの実行」でアクションを実行する前に、認証フィルターを実行する必要があることを意味します。フィルタが応答を返す場合(CodeHappyの例のように)、doコールバックは実行されません。
これを段階的に進めましょう、
array('before' => 'auth', 'do' => function()
配列へのパラメータ、
前
これはフィルターを指します。フィルタは、リクエストが処理される前に実行される関数です。
上記の場合、配列パラメーターのdo部分は、現在のリクエストで実行される関数を指します。ただし、その関数が実行できるようになる前に、認証フィルターが実行されます。
beforeパラメーターを使用して実行する複数のフィルターを指定することもできます。
for example: 'before' => array('csrf', 'auth', 'mycustomfilter')
「auth」フィルターは、関数にアクセスする前にアプリケーションでユーザーを認証するために使用されます。
考えてみましょう、routes.phpに次のコードがあります
Route::get('index', array('before' => 'auth', 'do' => function()
{
// application logic goes here
}));
したがって、以下のようにfilters.phpファイルで特定の認証フィルターを使用する必要があります
1)json応答を返します
Route::filter('auth', function()
{
if (!Auth::check()) {
return Response::json(array('flash' => 'Please log in.'), 401);
}
});
また
2)ログインビューにリダイレクトする
Route::filter('auth', function()
{
if (!Auth::check()) {
return Redirect::to('login');
}
});