使用 gate facade 时获取 403 Forbidden
Getting 403 Forbidden while using gate facade
写入用户权限时显示错误:403 Forbidden
控制器代码
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');
});
//
}
模型用户代码
User
模型关联了Roles
模型,Roles
模型关联了Permission
模型。
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;
}
}
}
检查 user
是否有任何 roles
,如果没有,则 canDo
将 return 为空并被视为 false
。
不确定 str_is
是什么?这不是 PHP 函数,您的意思是像 strcasecmp
or maybe Str::is
吗?
我怀疑没有角色,否则你不会得到 403
,相反你可能会得到 Call to undefined function str_is()
错误。
写入用户权限时显示错误:403 Forbidden
控制器代码
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');
});
//
}
模型用户代码
User
模型关联了Roles
模型,Roles
模型关联了Permission
模型。
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;
}
}
}
检查 user
是否有任何 roles
,如果没有,则 canDo
将 return 为空并被视为 false
。
不确定 str_is
是什么?这不是 PHP 函数,您的意思是像 strcasecmp
or maybe Str::is
吗?
我怀疑没有角色,否则你不会得到 403
,相反你可能会得到 Call to undefined function str_is()
错误。