Laravel 使用门面时禁止使用403
写入用户权限时显示错误:Laravel 使用门面时禁止使用403,laravel,laravel-facade,Laravel,Laravel Facade,写入用户权限时显示错误:403禁止 控制器代码 class IndexController extends AdminController { public function __construct(){ parent::__construct(); if (Gate::denies('VIEW_ADMIN')) { abort(403); } $this->template = env(
403禁止
控制器代码
class IndexController extends AdminController
{
public function __construct(){
parent::__construct();
if (Gate::denies('VIEW_ADMIN')) {
abort(403);
}
$this->template = env('THEME').'.admin.index';
}
AuthServiceProvider代码
public function boot()
{
$this->registerPolicies();
Gate::define('VIEW_ADMIN', function($user){
return $user->canDo('VIEW_ADMIN');
});
//
}
模型用户代码
用户
模型与角色
模型相关联,角色
模型与权限
模型相关联
public function canDo($permission, $require = FALSE){
if (is_array($permission)) {
dump($permission);
}
else{
foreach ($this->roles as $role) {
foreach ($this->permissions as $permission) {
if (str_is($permission,$permission->name)) {
return true;
}
}
}
}
}
您的
Gate
定义和注册似乎没有问题,我怀疑错误在于您的canDo
功能
忽略if(is_array($permission))
检查:
// does the user have any roles?
foreach ($this->roles as $role) {
foreach ($this->permissions as $permission) {
// what is str_is? It's not a PHP function
if (str_is($permission, $permission->name)) {
return true;
}
}
}
检查用户
是否有任何角色
,如果没有,则canDo
将返回空,并被视为false
不确定stru是什么?这不是一个PHP函数,你是说类似的还是可能的
我怀疑没有角色,否则您不会得到403
,相反,您可能会得到对未定义函数str_is()的调用