laravel permissions学习笔记

  1. permission扩展安装

您可以通过composer安装软件包:

omposer 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"

迁移发布后,你可以通过运行迁移来创建角色和权限表:

php artisan migrate

你可以发布配置文件:

php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider" --tag="config"

2.使用

use Spatie\Permission\Models\Role;
use Spatie\Permission\Models\Permission;

//创建角色
//guard_name 选择填,默认web. guard_name作用详情 另行百度这里不做过多阐述; 
Role::create(['name'=>'writer','guard_name'=>'api']);

//创建权限
Permission::create(['name' => 'edit articles']);

//用户赋予权限
Bouncer::allow('admin')->to('ban-users');
//执行上面代码,Bouncer就会分别在roles表和abilities表中创建两个记录。

//用户分配角色
$user->assignRole('writer');
$user->assignRole(['writer', 'admin']);

//把用户的角色清空,再进行赋值下面参数内的角色
$user->syncRoles(['writer', 'admin']);

//删除用户的角色
$user->removeRole('writer');


//用户赋予权限
$user->givePermissionTo('edit articles');
$user->givePermissionTo('edit articles', 'delete articles');

//删除用户权限
$user->revokePermissionTo('edit articles');

//删除用户所有权限,在赋值以下参数权限
$user->syncPermissions([ ' edit articles ',' delete articles ' ]);
//删除用户所有权限,在赋值以下参数权限
$role->syncPermissions([ ' edit articles ',' delete articles ' ]);

//判断用户是含有参数中的角色
$user->hasRole('writer');
//判断用户是否含有参数中,任一一种角色
$user->hasAnyRole(Role::all());
//判断用户是否有参数中所有角色
$user->hasAllRoles(Role::all());

//判断用户是否含有权限
$user->hasPermissionTo(' edit articles ');
//判断用户是否含有任意一种权限
$user->hasAnyPermission(['edit articles','publish articles','unpublish articles'];
//判断用户是否含有这参数内的权限,(如果用户没有直接赋予权限,但是赋予的角色含有的权限也可以通过)
$user->can('edit articles');








3.总结

之前用过一些权限管理的系统,但是用这款权限管理框架之后感觉更灵活,更轻松;

权限,角色(可以理解成用户组),用户 三者独立,却又息息相关。后面对系统更熟悉了之后又很打扩展潜力。

在安装完成之后系统内会多出5张表,model_has_roles,roles,role_has_permission,permissions,model_has_permissions.如果不使用laravel提供的User表,也可以自行创建。在赋予关联的时候使用对应的model就可以了;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值