【发布时间】:2016-05-11 15:24:12
【问题描述】:
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,该过滤器会将用户重定向到某个路由。
我这样实现log的结果是:
Laravel\Routing\Filter_Collection Object (
[filters] => Array ( [0] => profileValidate ) [parameters] => [only] => Array ( )
[except] => Array ( ) [methods] => Array ( ) )
在我的过滤器中,我有一个重定向到某些路由,但没有工作并且没有显示任何错误!
在我的实现开始时,我尝试将用户重定向到基本控制器内的某个页面,但它不起作用,因为要工作我也需要在我的父控制器中返回,那么这是一个问题,因为这个验证必须在我的方法实现开始时进行,并且返回必须在方法结束时。
你能帮我吗?谢谢!
【问题讨论】:
-
如何获取登录用户的个人资料?
-
记录的用户数据在会话中,我在会话中查看用户必须访问的模块和操作并返回 $result 变量中设置的 true 或 false。
-
如果我理解得很好,您需要应用该功能是使用 $result 来检查用户配置文件,然后转到预期的页面,对吧?
-
是的,注释 //logical .. 是订阅我的逻辑,逻辑设置 $result 变量为真或假...如果为假,我需要重定向到 /login 路由,如果为真, 只返回一个布尔值或 void(0);了解我吗?
-
好的,知道了,$module 和 $action 变量我猜是通过 URL 来的,对吧?