Laravel检查登录资源路线

时间:2014-01-31 05:12:20

标签: php laravel laravel-4

我在路由中使用资源将所有请求发送到控制器。但在此路由功能中我使用'before' => 'csrf'并且用户必须登录才能查看页面,但如果用户未登录,则会收到此错误:

ErrorException

Trying to get property of non-object (View: /var/www/laravel/app/views/back_end/layouts/profile.blade.php)

此行进入profile.blade.php:

Auth::user()->username;

我的定义路线位于代码下方:

Route::get('login', array('as'=>'login', function()
{
    return View::make('back_end.login');
}));
Route::resource('admin/profile' , 'ProfileController' , array('as'=>'profile' , 'before'=>'csrf'));

1 个答案:

答案 0 :(得分:2)

这样的事情:

在filters.php设置身份验证过滤器

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

然后在routes.php上

Route::get('login', array('as'=>'login', function()
{
    return View::make('back_end.login');
}));

//Group to put all the routes that need login first
Route::group(array('before' => 'auth'), function()
{
  Route::resource('admin/profile' , 'ProfileController' , array('as'=>'profile' , 'before'=>'csrf'));
});