如果用户未登录Laravel,则重定向到登录

rka*_*yan 11 laravel laravel-4 laravel-routing

我是laravel的新手,

我在我的控制器的__construct中有代码

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

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

它的工作正常,但我想要的是.将这些编码放在每个控制器中真的很烦人,所以我希望将这个验证Auth和重定向到一个地方的登录页面,可能在router.phpfilters.php.

我已经阅读了论坛以及中的一些帖子stackoverflow,并添加了filters.php类似下面的代码,但这也无法正常工作.

Route::filter('auth', function() {
    if (Auth::guest())
    return Redirect::guest('login');
});
Run Code Online (Sandbox Code Playgroud)

请帮我解决这个问题.

luk*_*ter 35

Laravel 5.4

使用内置auth中间件.

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

对于单一路线:

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

Laravel文档

Laravel 4(原始答案)

那已经内置于laravel.请参阅auth过滤器filters.php.只需将前过滤器添加到您的路线即可.最好使用一个组并将其包裹在受保护的路径周围:

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

    Route::get('/', 'HomeController@index');
});
Run Code Online (Sandbox Code Playgroud)

或者对于单一路线:

Route::get('/', array('before' => 'auth', 'uses' => 'HomeController@index'));
Run Code Online (Sandbox Code Playgroud)

要更改重定向网址或发送消息,只需filters.php根据自己的喜好编辑过滤器.

  • 之前??现在不是中间件吗?`Route :: group(['middleware'=> ['auth']],function(){` (2认同)