Laravel 5 检查管理中间件逻辑是否不正确(一对多角色)
Laravel 5 checkif Admin middleware logic not correct (one to many with role)
我正在构建一个 Laravel 5 REST-webapp。现在我想添加一个 Admi。我通过设置一对多关系来做到这一点(用户可以有 1 个角色,1 个角色可以有很多用户)table
像这样:
public function role()
{
return $this->hasOne(Role::class);
}
这行得通,我有一个 role_id 的用户。
但现在我一直在编写中间件并正确使用它 role_id。
现在,我的管理中间件是
public function handle($request, Closure $next, $guard = null)
{
if (Auth::User()->isRole('Admin')) {
return $next($request);
}
return redirect()->guest('login');
}
在我的用户模型中我有:
public function isRole($roleName)
{
if ($this->with('role') == $roleName)
{
print_r($this->with('role.name'));
}
return false;
}
但是这段代码只是把我送到主页。
我的中间件逻辑错误(其他所有设置都正确)。
亲切的问候
您可能应该更改:
public function isRole($roleName)
{
if ($this->with('role') == $roleName)
{
print_r($this->with('role.name'));
}
return false;
}
进入:
public function isRole($roleName)
{
return $this->role->name == $roleName;
}
让它发挥作用
编辑
你也应该改变你的关系:
public function role()
{
return $this->hasOne(Role::class);
}
进入
public function role()
{
return $this->belongsTo(Role::class);
}
假设您在 users
table
中有 role_id
列
我正在构建一个 Laravel 5 REST-webapp。现在我想添加一个 Admi。我通过设置一对多关系来做到这一点(用户可以有 1 个角色,1 个角色可以有很多用户)table 像这样:
public function role()
{
return $this->hasOne(Role::class);
}
这行得通,我有一个 role_id 的用户。 但现在我一直在编写中间件并正确使用它 role_id。
现在,我的管理中间件是
public function handle($request, Closure $next, $guard = null)
{
if (Auth::User()->isRole('Admin')) {
return $next($request);
}
return redirect()->guest('login');
}
在我的用户模型中我有:
public function isRole($roleName)
{
if ($this->with('role') == $roleName)
{
print_r($this->with('role.name'));
}
return false;
}
但是这段代码只是把我送到主页。
我的中间件逻辑错误(其他所有设置都正确)。
亲切的问候
您可能应该更改:
public function isRole($roleName)
{
if ($this->with('role') == $roleName)
{
print_r($this->with('role.name'));
}
return false;
}
进入:
public function isRole($roleName)
{
return $this->role->name == $roleName;
}
让它发挥作用
编辑
你也应该改变你的关系:
public function role()
{
return $this->hasOne(Role::class);
}
进入
public function role()
{
return $this->belongsTo(Role::class);
}
假设您在 users
table
role_id
列