A在使用Laravel 3时遇到问题,我需要使用这个Laravel版本,因为这是我公司的Laravel的同源版本。
因此,我想在base_controller中实现一个受保护的方法,以便在我的所有控制器中使用该方法。
然后我实现了下面的代码:
protected function verifyLoggedUser( $module, $action ) {
$result = false;
//logical to validate user permissions
if( !$result )
return $this->filter('before', 'profileValidate');
else
return $result;
}
在我的控制器中,我调用这个方法来验证记录的用户权限,然后我需要当权限为false时,基本控制器调用过滤器profileValidate,该过滤器会将用户重定向到某个路由。
我实现日志结果的方式是:
Laravel'Routing'Filter_Collection Object (
[filters] => Array ( [0] => profileValidate ) [parameters] => [only] => Array ( )
[except] => Array ( ) [methods] => Array ( ) )
在我的过滤器内部,我有一个重定向到某个路由的重定向,但没有工作,也没有显示任何错误!
在实现之初,我试图将用户重定向到基本控制器内的某个页面,但不起作用,因为要起作用,我也需要在父控制器中返回,这是一个问题,因为必须在方法实现之初进行验证,并且返回必须在方法的末尾。
你能帮我吗?非常感谢。
您可以直接在传递参数的路由上使用过滤器进行过滤,设置一个或多个角色可以访问该部分,类似于以下内容:
Route::group(array('before' => 'verifyLoggedUser:admin,action'), function()
{
Route::get('panel', 'someController@action');
Route::get('dashboard','someController@otherAction');
});
这些参数可以通过以下方式被过滤器获取:
Route::filter('filter', function($route, $request, $module, $action)
{
$result = false;
//logical to validate user permissions
if( !$result )
return $this->filter('before', 'profileValidate');
else
return $result;
});