PHP五表权限管理,用户角色权限控制包 Laravel-permission 使用笔记(Laravel5+)

第一部分 安装

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

第一步: 通过 composer 安装软件包:

composer require spatie/laravel-permission

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

'providers' => [

// other code

Spatie\Permission\PermissionServiceProvider::class,

];

第二步: 发布迁移

php artisan vendor:publish --provider="SpatiePermissionPermissionServiceProvider" --tag="migrations"

迁移发布成功后,运行迁移来创建角色和权限表:

php artisan migrate

第四步: 发布配置文件:

php artisan vendor:publish --provider="SpatiePermissionPermissionServiceProvider" --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,

];

第二部分 开始使用

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

namespace App;

use Illuminate\Foundation\Auth\User as Authenticatable;

use Spatie\Permission\Traits\HasRoles;

class User extends Authenticatable

{

use Notifiable, HasRoles;

// other code

}

第六步. 使用中间件,分配权限和角色来保护用户:`

此软件包附带 RoleMiddleware 和 PermissionMiddleware 中间件。 直接将它们添加到 app/Http/Kernel.php 文件中。

protected $routeMiddleware = [

// other code

'role' => \Spatie\Permission\Middlewares\RoleMiddleware::class,

'permission' => \Spatie\Permission\Middlewares\PermissionMiddleware::class,

];

使用中间件规则保护你的路由:

Route::group(['middleware' => ['role:super-admin']], function () {

// route code

});

Route::group(['middleware' => ['permission:publish articles']], function () {

// route code

});

Route::group(['middleware' => ['role:super-admin','permission:publish articles']], function () {

// route code

});

路由案例

Route::group(['middleware' => ['role:编辑']], function ($route) {

$route->get('/api/user', 'UserController@show');

});

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值