【发布时间】:2020-02-27 20:41:13
【问题描述】:
我在检查中间件中的用户角色时遇到问题,得到空的 $roles 数组
User.php 模型
protected $fillable = [
'name', 'email', 'password','role_id',
];
public function roles()
{
return $this->belongsTo('App\Role');
}
CheckRole.php 中间件
public function handle($request, Closure $next, ...$roles)
{
echo "<pre>"; print_r($roles); die();
if($request->user()->hasRole($roles) || !$roles)
{
return $next($request);
}
abort(404);
}
web.php
Route::get('/home', 'HomeController@index')->name('home');
Route::group(['middleware' => ['auth', 'roles'], 'roles:admin'], function () {
//echo "admin"; die();
Route::get('/abc', function () {
echo"sds";
});
});
Role.php 角色模型
protected $table =['roles'];
protected $fillable =['title'];
【问题讨论】:
-
您是否在
kernel.php文件中将'roles' => \App\Http\Middleware\YOUR_MIDDLEWARE_CLASS_NAME::class,添加到$routeMiddleware属性? -
是的,我已经在 $routeMiddleware 中添加了
-
您的用户是否只有 1 个角色?
-
没有用户拥有多个角色
-
所以如果你的用户有多个角色你必须使用
public function roles() { return $this->hasMany('App\Role'); }