Laravel

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

文 / 管理员 来源 / 原创 阅读 / 727 3年前
此文章根据 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

版权声明:著作权归作者所有。商业转载请联系作者获得授权,非商业转载请保留以上作者信息和原文链接。


评论

共0条评论
  • 这篇文章还没有收到评论,赶紧来抢沙发吧~

站点声明:本站转载作品版权归原作者及来源网站所有,原创内容作品版权归作者所有,任何内容转载、商业用途等均须联系原作者并注明来源。

© 2020-2030 qdxcy.cn 版权所有京ICP备13045222号
相关侵权、举报、投诉及建议等,请发E-mail:2323946929@qq.com

友情链接: YzmCMS官方网站 YzmCMS官方论坛