我正在尝试为我的应用程序设计一个高效且灵活的RBAC解决方案。我进行了一些研究,并认为我已经创建了以下内容。
在我的用户模型中,我有:
...
public function role() {
return $this->belongsToMany('App\Models\Role', 'user_roles');
}
public function hasRole($role) {
if($this->role->where('name', $role)->first())
return true;
}
...
以下是用法示例:
Route::group(['middleware' => 'auth'], function () {
Route::get('/dashboard', function () {
if (Auth::user()->hasRole('Sales')) {
return view('dashboards/sales');
} else {
return 'Don\'t know where to send you :(';
}
});
});
权限分配给角色,但在上面的示例中没有检查权限。然后将角色分配给用户,一个用户可以拥有多个角色。
我这样做的方式是否可扩展且是有效的RBAC解决方案?