Laravel 中的 RBAC 管理

Posted

技术标签:

【中文标题】Laravel 中的 RBAC 管理【英文标题】:RBAC management in Laravel 【发布时间】:2017-03-19 02:05:30 【问题描述】:

我想在 Laravel 中添加一个包来管理角色和权限,

我找到了一些包:

https://cartalyst.com/manual/sentinel/2.0 http://docs.toddish.co.uk/verify/laravel-5/ https://github.com/Zizaco/entrust

但我不知道哪个更好!

我的要求:

我已经有一个管理面板和用户管理系统,现在我想添加一个用于添加用户组的部分,这样我就可以从管理面板创建用户组,然后将权限分配给用户组,然后我可以将用户分配给组。 在站点中,我应该验证用户访问权限。

我想知道我可以使用 db 和管理面板使用这些软件包管理组和角色吗?

【问题讨论】:

试试github.com/Zizaco/entrust @AbuSayem 谢谢,您有任何将权限集成到数据库中的教程吗? 阅读其文档。我认为这是有据可查的 你应该试试 php-Casbin 及其 Laravel 中间件:github.com/php-casbin/laravel-authz 【参考方案1】:

我使用了 entrust,它非常好,可扩展的基于角色的访问控制。

我可以给你一个快速的开始:

使用 composer 安装。 为config/app.php添加别名 运行 php artisan vendor:publish

打开您的config/auth.php 并添加以下内容:

'providers' => [ 'users' => [ 'driver' => 'eloquent', 'model' => Namespace\Of\Your\User\Model\User::class, 'table' => 'users', ], ],

如果你想使用中间件并且你应该使用然后添加:

'role' => \Zizaco\Entrust\Middleware\EntrustRole::class, 'permission' => \Zizaco\Entrust\Middleware\EntrustPermission::class, 'ability' => \Zizaco\Entrust\Middleware\EntrustAbility::class,

在 config/auth.php 中设置属性值。这些值将是 entrust 用来引用正确的用户表和模型。

生成 Entrust 迁移:

php artisan entrust:migration 然后php artisan migrate

注意:检查您的迁移表。

现在添加模型:RolePermission 供两者使用 use Zizaco\Entrust\EntrustRole;

在您的User 模型中使用use Zizaco\Entrust\Traits\EntrustUserTrait;

还有composer dump-autoload

你可以走了。


要添加角色和权限,您应该有视图,用于在表中添加列表用户以及角色的视图,就像您编辑用户时一样,下拉列表中应该有一个角色选项。

那么对于角色,应该有类似的权限,admin 拥有read,write,delete 的权限。所以现在您有一个视图,您可以在其中授予角色权限。

休息是你自己的逻辑,你的需要。

【讨论】:

谢谢,但我想知道如何从管理面板向数据库添加角色和权限,如何添加新组和权限?我应该手动添加到RolePermission 表吗?

以上是关于Laravel 中的 RBAC 管理的主要内容,如果未能解决你的问题,请参考以下文章

使用 Entrust 扩展包在 Laravel 5 中实现 RBAC 权限管理与安装配置

Laravel+Layui实现RBAC权限管理系统

Laravel9+Vue+ElementUI实现RBAC权限管理系统

基于Laravel+Layui实现的RBAC权限管理系统

基于PHP语言Laravel9+Layui实现RBAC权限管理系统

laravel 中的rbac自己简单的实现