我在路由中使用资源将所有请求发送到控制器。但在此路由功能中我使用'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'));
答案 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'));
});