7

認証を作成しましたが、完全に機能しています。ただし、内部ページのチェックには問題があります。例えば、

Route::get('/', array('before' => 'auth' , 'do'=> function(){
return View::make('home.index');
}));

インデックス ページは、ログインしているユーザーにのみ表示されます。しかし、たとえば、内側のページに移動するたびにexample.com/products. 商品ページはログインしなくてもご覧いただけます。

4

9 に答える 9

9

これが私の解決策です。

/**
 * Groups of routes that needs authentication to access.
 */
Route::group(array('before' => 'auth'), function() 
{
    Route::get('user/logout', array(
        'uses' => 'UserController@doLogout',
    ));

    Route::get('/', function() {
        return Redirect::to('dashboard');
    });

    Route::get('dashboard',  array(
        'uses' => 'DashboardController@showIndex',
    ));

    // More Routes

});

// Here Routes that don't need Auth.
于 2013-09-22T17:21:21.093 に答える
7

多くのルートにフィルターを適用するには、いくつかの方法があります。

rotue を配置するRoute::group()か、コントローラーを使用してそこにフィルターを追加する場合は、フィルターを に追加して、Base_Controllerすべてに適用されるようにします。フィルタ パターンを使用して、フィルタを適用したくない一部を除くすべてに適用する正規表現を使用することもできます。

ドキュメンテーション

ルートフィルター: http://laravel.com/docs/routing#route-filters

他のものは基本的にドキュメントにあるので、パターンフィルターの例。これは最速かもしれませんが、この関数に正規表現を登録する方法に問題があるため、最も問題があります (*は実際には に変換され(.*)ます)。

Route::filter('pattern: ^(?!login)*', 'auth');

これにより、 を除くすべてのルートに認証が適用されますexample.com/login

于 2012-12-06T19:42:22.103 に答える
3
Route::group(['middleware' => ['auth']], function()
{
    Route::get('list', 'EventsController@index');     
});

ドキュメントページで詳細を読む: https://laravel.com/docs/5.2/routing#route-groups

于 2016-08-16T22:31:34.090 に答える
2

より良い方法があるかもしれませんが、私はホワイトリスト アプローチを採用しています。この配列に配置したページを除いて、すべてがパブリックからブロックされます。

 // config/application.php   
 return array(

    'safe' => array(
        '/',
        'card/form_confirm',
        'record/form_create',
        'card/form_viewer',
        'user/login',
        'user/quick_login',
        'user/register',
        'info/how_it_works',
        'info/pricing',
        'info/faq',
        'info/our_story',
        'invite/accept',
        'user/terms',
        'user/privacy',
        'email/send_email_queue',
        'user/manual_login',
        'checkin/',
        'checkin/activate',
        'system/list',
    ),

// routes.php
Route::filter('before', function()
{
    // Maintenance mode
    if(0) return Response::error( '503' );

    /*
        Secures parts of the application
        from public viewing.
    */
    $location = URI::segment(1) . '/' . URI::segment(2);
    if(Auth::guest() && !in_array( $location, Config::get('application.safe')))
        return Redirect::to( 'user/login' );
});
于 2012-12-08T23:58:01.310 に答える
1

ユーザーがビューにログインしているかどうかを確認してください。または、すべてのコントローラーを制限する (使用する場合) または、ルート グループを確認し、ルートのグループ全体にフィルターを適用します: http://laravel.com/docs/routing#groups

于 2012-12-06T14:44:20.227 に答える
1
Route::filter('pattern: /*', array('name' => 'auth', function()
{
  return View::make('home.index');
}));
于 2012-12-07T15:50:51.580 に答える
0

それは私のために働いた。それを見てください。

Route::when('*', 'auth.basic');

Route::get('api/getactorinfo/{actorname}', array('uses' =>'ActorController@getActorInfo'));
Route::get('api/getmovieinfo/{moviename}', array('uses' =>'MovieController@getMovieInfo'));
Route::put('api/addactor/{actorname}', array('uses' =>'ActorController@putActor'));
Route::put('api/addmovie/{moviename}/{movieyear}', array('uses' =>'MovieController@putMovie'));
Route::delete('api/deleteactor/{id}', array('uses' =>'ActorController@deleteActor'));
Route::delete('api/deletemovie/{id}', array('uses' =>'MovieController@deleteMovie'));
于 2015-09-03T04:23:30.537 に答える