【发布时间】:2015-12-09 04:24:09
【问题描述】:
我正在尝试为我的应用提供一种高效灵活的 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 解决方案?
【问题讨论】:
-
5.1.11 引入了使用功能和策略的授权。他们能满足你的要求吗? laravel.com/docs/5.1/authorization .. 你可以尝试 ENTRUST 虽然github.com/Zizaco/entrust
-
谢谢,它唯一没有告诉你怎么做的就是如何使用数据库为某些用户分配能力。
-
而是通过用户模型检查能力...laravel.com/docs/5.1/authorization#defining-abilities
-
只是为了提供 L5 开箱即用解决方案的替代方案:另一个很好的包是 Entrust 包 - 它有很好的文档记录并且完全符合您的要求。 github.com/Zizaco/entrust
标签: php laravel laravel-5 laravel-5.1 rbac