用户角色权限控制包 Laravel-permission 使用说明

本文参考自: 原文地址

此文章根据 laravel-permission官方说明文件 翻译

管理你的用户对应的角色与权限

此软件包允许你管理数据库中的用户权限和角色。

安装后,你可以做这样的事情:

// 向用户添加权限 $user->givePermissionTo('edit articles'); // 通过角色添加权限 $user->assignRole('writer'); $role->givePermissionTo('edit articles');

如果你使用多个守卫( guard ),则将会被覆盖。每个分配给用户的守卫,都有自己的一套权限和角色。请阅读使用自述文件的 多重保护 部分。

由于所有权限都将在 Laravel's gate 上进行注册,因此你可以使用 Laravel 默认的 can 方法测试用户是否具有权限:

$user->can('edit articles');

Spatie 是比利时安特卫普的一家网页设计机构。 您可以在我们的 网站 上找到我们所有开源项目的概述。

安装

Laravel

该软件包可用于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, ];

Lumen

你可以通过 Composer 安装软件包(该步其实安装spatie的时候已经执行了):

composer require spatie/laravel-permission

复制必要的文件:

cp vendor/spatie/laravel-permission/config/permission.php config/permission.php cp vendor/spatie/laravel-permission/database/migrations/create_permission_tables.php.stub database/migrations/2018_01_01_000000_create_permission_tables.php

你还需要在 config/auth.php 创建另一个配置文件。 在 Laravel 存储库中获取它,或者运行以下命令:

curl -Ls https://raw.githubusercontent.com/laravel/lumen-framework/5.5/config/auth.php -o config/auth.php

现在,运行你的迁移:

php artisan migrate

然后,在 bootstrap/app.php 中注册中间件:

$app->routeMiddleware([ 'auth' => App\Http\Middleware\Authenticate::class, 'permission' => Spatie\Permission\Middlewares\PermissionMiddleware::class, 'role' => Spatie\Permission\Middlewares\RoleMiddleware::class, ]);

以及配置和服务提供者:

$app->configure('permission'); $app->register(Spatie\Permission\PermissionServiceProvider::class);</
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值