Roles
角色和权限是许多 Web 应用程序的重要组成部分
- 游客 -- 没有登录的用户
- 用户 -- 登录用户
- 管理员 -- 社区内容管理
- 站长 -- 权限最高的用户角色
权限管理
Laravel 自带的用户授权方案
- Gates 和 Policies
- $this->authorize()
- @can 和 @cannot Blade 命令
拓展包 Laravel-permission
- 安装拓展包
composer require "spatie/laravel-permission:~2.7"
- 生产数据库迁移文件
php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider" --tag="migrations"
-
permission 数据库表结构
- 配置
php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider" --tag="config"
加载 HasRoles
通过在用户模型里使用 trait -- HasRoles 可获得拓展包提供的方法
初始化
角色:管理员和站长
权限:内容管理、用户管理、网站设置
创建表
php artisan make:migration seed_roles_and_permissions_data
ex
//创建权限
Permission::create(['name' => 'manage_contents']);
Permission::create(['name' => 'manage_users']);
Permission::create(['name' => 'edit_settings']);
//创建站长并赋予权限
$founder = Role::create(['name' => 'Founder']);
$founder->givePermissionTo('manage_contents');
$founder->givePermissionTo('manage_users');
...
//关联用户
$user->assignRole('Founder');
//检查用户角色
$user->hasRole('Founder');
$user->hasAnyRole(Role::all());
$user->hasAllRoles(Role::all());
//检查权限
$user->can('manage_contents');
$role->hasPermissionTo('manage_contents');