【发布时间】:2014-11-18 19:07:44
【问题描述】:
这是我的子控制器:
class VolunteersController extends \BaseController
{
public function index()
{
$this->checkForRoles(['admin']);
//list some secret stuff for admin
}
}
在我的基本控制器中,我这样做了:
class BaseController extends Controller
{
protected function checkForRoles($roles)
{
foreach ($roles as $role) {
if (!(Auth::user()->hasRole($role))) {
return Redirect::to('/');
}
}
}
}
现在我期望的是,如果他的角色不是管理员,BaseController 中的 return Redirect::to('/'); 行会将用户重定向到主页。
但这并没有发生。 //list some secret stuff for admin 无论如何都会被执行。
编辑: 有些人可能想知道,为什么我不使用过滤器。是的,所需的功能是过滤器,但显然过滤器不支持 Laravel 中的数组参数。如您所见,我需要将一组角色传递给函数。
请帮忙。
【问题讨论】:
-
从
return Redirect::to('/');这一行中删除return,并且可以在Redirect::to('/');之后使用exit;如果这可以解决问题,我会给出答案。 -
我也猜到了。它不起作用。
-
猜到了还是你试过了? :)
-
我说“这行不通。”这意味着我试过了。 :)
-
为什么不把它放在前置过滤器中?
标签: php laravel laravel-4 laravel-routing