资讯专栏INFORMATION COLUMN

用户角色权限控制包 Laravel-permission 使用笔记(Laravel5+)

mist14 / 3145人阅读

摘要:第一部分安装该软件包可用于或更高版本。默认情况下,所有权限将被缓存小时,除非更新许可或者更新角色来立即刷新缓存。设置为时,所需的权限角色名称将添加到异常消息中。在某些情况下,这可能被认为是信息泄漏,所以为了获得最佳安全性,默认设置为。

第一部分 安装

</>复制代码

  1. 该软件包可用于Laravel 5.4 或更高版本。 如果您使用的是旧版本的 Laravel ,请查看该软件包的 v1 分支。

</>复制代码

  1. 第一步: 通过 composer 安装软件包:
    composer require spatie/laravel-permission

</>复制代码

  1. (可选项)在 Laravel 5.5 中,服务提供商将自动获得注册。 在旧版本的框架中,只需在 config/app.php 文件中添加服务提供者即可:

</>复制代码

  1. [
  2. // other code
  3. SpatiePermissionPermissionServiceProvider::class,
  4. ];

</>复制代码

  1. 第二步: 发布迁移
    php artisan vendor:publish --provider="SpatiePermissionPermissionServiceProvider" --tag="migrations"
    迁移发布成功后,运行迁移来创建角色和权限表:
    php artisan migrate

</>复制代码

  1. 第四步: 发布配置文件:
    php artisan vendor:publish --provider="SpatiePermissionPermissionServiceProvider" --tag="config"
    发布时 config/permission.php 配置文件 包含:

</>复制代码

  1. [
  2. /*
  3. * 当使用这个包中的 “HasRoles” 特性时,我们需要知道应该
  4. * 使用哪个 Eloquent 模型来获取您的权限。
  5. * 当然,它通常只是“权限(Permission)”模型,你也可以使用任何你喜欢的模型。
  6. *
  7. * 您使用的权限模型必须实现
  8. * `SpatiePermissionContractsPermission` 契约。
  9. */
  10. "permission" => SpatiePermissionModelsPermission::class,
  11. /*
  12. * 当使用这个包中的 “HasRoles” 特性时,
  13. * 我们需要知道应该使用哪个 Eloquent 模型来检索你的角色。
  14. * 当然,它通常只是 “角色(Role)” 模型,你也可以使用任何你喜欢的模型。
  15. *
  16. * 您使用的权限模型必须实现
  17. * `SpatiePermissionContractsRole` 契约。
  18. */
  19. "role" => SpatiePermissionModelsRole::class,
  20. ],
  21. "table_names" => [
  22. /*
  23. * 当使用这个包中的 “HasRoles” 特性时,
  24. * 我们需要知道哪个表应该用来检索你的“角色”。
  25. * 我们选择了一个基本的默认值,但您可以轻松将其更改为您喜欢的。
  26. */
  27. "roles" => "roles",
  28. /*
  29. * 当使用这个包中的 “HasRoles” 特性时,
  30. * 我们需要知道哪个表应该用来检索你的权限。
  31. * 我们选择了一个基本的默认值,但您可以轻松将其更改为您喜欢的任何表。
  32. */
  33. "permissions" => "permissions",
  34. /*
  35. *
  36. * 当使用这个包中的 “HasRoles” 特征时,
  37. * 我们需要知道应该使用哪个表来检索你的“模型权限”。
  38. * 我们选择了一个基本的默认值,但您可以轻松将其更改为您喜欢的任何表。
  39. *
  40. */
  41. "model_has_permissions" => "model_has_permissions",
  42. /*
  43. * 当使用这个包中的 “HasRoles” 特性时,
  44. * 我们需要知道哪个表应该用来检索你的“模型角色”。
  45. * 我们选择了一个基本的默认值,但您可以轻松将其更改为您喜欢的任何表。
  46. */
  47. "model_has_roles" => "model_has_roles",
  48. /*
  49. * 当使用这个包中的 “HasRoles” 特性时,
  50. * 我们需要知道应该使用哪个表来检索您的“角色权限”。
  51. * 我们选择了一个基本的默认值,但您可以轻松将其更改为您喜欢的任何表。
  52. */
  53. "role_has_permissions" => "role_has_permissions",
  54. ],
  55. /*
  56. * 默认情况下,所有权限将被缓存24小时,
  57. * 除非更新许可或者更新角色来立即刷新缓存。
  58. */
  59. "cache_expiration_time" => 60 * 24,
  60. /*
  61. * 设置为 true 时,所需的权限/角色名称( permission/role)将添加到异常消息中。
  62. * 在某些情况下,这可能被认为是信息泄漏,
  63. * 所以为了获得最佳安全性,默认设置为 false
  64. */
  65. "display_permission_in_exception" => false,
  66. ];
第二部分 开始使用

</>复制代码

  1. 第五步. 将 SpatiePermissionTraitsHasRoles 特征添加到您的 User 模型中:`

</>复制代码

  1. </>复制代码

    1. 第六步. 使用中间件,分配权限和角色来保护用户:`
      此软件包附带 RoleMiddleware 和 PermissionMiddleware 中间件。 直接将它们添加到 app/Http/Kernel.php 文件中。
  2. </>复制代码

    1. SpatiePermissionMiddlewaresRoleMiddleware::class,
    2. "permission" => SpatiePermissionMiddlewaresPermissionMiddleware::class,
    3. ];
  3. </>复制代码

    1. 使用中间件规则保护你的路由:
  4. </>复制代码

    1. ["role:super-admin"]], function () {
    2. // route code
    3. });
    4. Route::group(["middleware" => ["permission:publish articles"]], function () {
    5. // route code
    6. });
    7. Route::group(["middleware" => ["role:super-admin","permission:publish articles"]], function () {
    8. // route code
    9. });
  5. </>复制代码

    1. 路由案例
  6. </>复制代码

    1. ["role:编辑"]], function ($route) {
    2. $route->get("/api/user", "UserController@show");
    3. });

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/29986.html

相关文章

  • 【 Laravel 工具推荐--角色权限管理】

    摘要:在大多数的开发中,角色和权限的管理都是非常重要的一部分。上关于角色和权限管理的包有很多,今天就为大家介绍几个好用的包。缓存在中,为了提高应用的性能,或自动的存储角色和权限数据。 showImg(https://segmentfault.com/img/bVTEb3?w=2200&h=1125); 在大多数的web开发中,角色和权限的管理都是非常重要的一部分。Laravel上关于角色和权...

    xiaoxiaozi 评论0 收藏0
  • Laravel5.1基于Entrust扩展实现的RBAC权限控制模块(迁移到其他项目中的方法)

    摘要:基于扩展包实现的权限控制模块迁移到其他项目中的方法大部分的项目中,都需要权限控制,我们的项目用的是的框架,基于扩展包,写了一个通用的权限控制模块,方便后续其他项目需要时可用直接迁移使用。拷贝权限控制中间件。 Laravel5.1基于Entrust扩展包实现的RBAC权限控制模块(迁移到其他项目中的方法) 大部分的项目中,都需要权限控制,我们的项目用的是Laravel5.1的框架,基于E...

    li21 评论0 收藏0
  • Laravel 开源项目 『 糖果盒子 - Web 开发者的书签导航 』

    摘要:项目概述糖果盒子是采用开发的站点导航应用,专注分享优质开发资源站点,希望成为开发人员最喜爱的的书签导航。线上地址糖果盒子开发者的书签导航地址求环境要求部署安装本项目代码使用框架开发,本地开发环境使用。 showImg(https://segmentfault.com/img/remote/1460000012018405?w=3346&h=1950);showImg(https://s...

    姘存按 评论0 收藏0
  • Laravel 开源项目 『 糖果盒子 - Web 开发者的书签导航 』

    摘要:项目概述糖果盒子是采用开发的站点导航应用,专注分享优质开发资源站点,希望成为开发人员最喜爱的的书签导航。线上地址糖果盒子开发者的书签导航地址求环境要求部署安装本项目代码使用框架开发,本地开发环境使用。 showImg(https://segmentfault.com/img/remote/1460000012018405?w=3346&h=1950);showImg(https://s...

    summerpxy 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<