Laravel
此文章根据 laravel-permission 官方说明文件 翻译
此软件包允许你管理数据库中的用户权限和角色。
安装后,你可以做这样的事情:
// 向用户添加权限 $user->givePermissionTo('edit articles'); // 通过角色添加权限 $user->assignRole('writer'); $role->givePermissionTo('edit articles');
如果你使用多个守卫( guard ),则将会被覆盖。每个分配给用户的守卫,都有自己的一套权限和角色。请阅读使用自述文件的 多重保护 部分。
由于所有权限都将在 Laravel's gate 上进行注册,因此你可以使用 Laravel 默认的 can 方法测试用户是否具有权限:
$user->can('edit articles');
该软件包可用于 Laravel 5.4 或更高版本。 如果您使用的是旧版本的 Laravel ,请查看该软件包的 v1 分支。
您可以通过 composer 安装软件包:
composer require spatie/laravel-permission
在 Laravel 5.5 中,服务提供商将自动获得注册。 在旧版本的框架中,只需在 config/app.php
文件中添加服务提供者即可:
'providers' => [ // ... Spatie\Permission\PermissionServiceProvider::class, ];
你可以通过以下方式 发布迁移 :
php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider" --tag="migrations"
如果你为你的 User 模型使用 UUID 或 GUID,你可以更新 create_permission_tables.php 的迁移,并用下面的代码替换为 $table->morphs('model') :
$table->uuid('model_id'); $table->string('model_type');
迁移发布后,你可以通过运行迁移来创建角色和权限表:
php artisan migrate
你可以发布配置文件:
php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider" --tag="config"
发布时 config/permission.php
配置文件 包含:
return [ 'models' => [ /* * 当使用这个包中的 “HasRoles” 特性时,我们需要知道应该 * 使用哪个 Eloquent 模型来获取您的权限。 * 当然,它通常只是“权限(Permission)”模型,你也可以使用任何你喜欢的模型。 * * 您使用的权限模型必须实现 * `Spatie\Permission\Contracts\Permission` 契约。 */ 'permission' => Spatie\Permission\Models\Permission::class, /* * 当使用这个包中的 “HasRoles” 特性时, * 我们需要知道应该使用哪个 Eloquent 模型来检索你的角色。 * 当然,它通常只是 “角色(Role)” 模型,你也可以使用任何你喜欢的模型。 * * 您使用的权限模型必须实现 * `Spatie\Permission\Contracts\Role` 契约。 */ 'role' => Spatie\Permission\Models\Role::class, ], 'table_names' => [ /* * 当使用这个包中的 “HasRoles” 特性时, * 我们需要知道哪个表应该用来检索你的“角色”。 * 我们选择了一个基本的默认值,但您可以轻松将其更改为您喜欢的。 */ 'roles' => 'roles', /* * 当使用这个包中的 “HasRoles” 特性时, * 我们需要知道哪个表应该用来检索你的权限。 * 我们选择了一个基本的默认值,但您可以轻松将其更改为您喜欢的任何表。 */ 'permissions' => 'permissions', /* * * 当使用这个包中的 “HasRoles” 特征时, * 我们需要知道应该使用哪个表来检索你的“模型权限”。 * 我们选择了一个基本的默认值,但您可以轻松将其更改为您喜欢的任何表。 * */ 'model_has_permissions' => 'model_has_permissions', /* * 当使用这个包中的 “HasRoles” 特性时, * 我们需要知道哪个表应该用来检索你的“模型角色”。 * 我们选择了一个基本的默认值,但您可以轻松将其更改为您喜欢的任何表。 */ 'model_has_roles' => 'model_has_roles', /* * 当使用这个包中的 “HasRoles” 特性时, * 我们需要知道应该使用哪个表来检索您的“角色权限”。 * 我们选择了一个基本的默认值,但您可以轻松将其更改为您喜欢的任何表。 */ 'role_has_permissions' => 'role_has_permissions', ], /* * 默认情况下,所有权限将被缓存24小时, * 除非更新许可或者更新角色来立即刷新缓存。 */ 'cache_expiration_time' => 60 * 24, /* * 设置为 true 时,所需的权限/角色名称( permission/role)将添加到异常消息中。 * 在某些情况下,这可能被认为是信息泄漏, * 所以为了获得最佳安全性,默认设置为 false。 */ 'display_permission_in_exception' => false, ];
————————————————
原文作者:学冰
转自链接:https://learnku.com/articles/9842/user-role-permission-control-package-laravel-permission-usage-description
版权声明:著作权归作者所有。商业转载请联系作者获得授权,非商业转载请保留以上作者信息和原文链接。