Permission

Roles

角色和权限是许多 Web 应用程序的重要组成部分

  • 游客 -- 没有登录的用户
  • 用户 -- 登录用户
  • 管理员 -- 社区内容管理
  • 站长 -- 权限最高的用户角色

权限管理

Laravel 自带的用户授权方案

  • Gates 和 Policies
  • $this->authorize()
  • @can 和 @cannot Blade 命令

拓展包 Laravel-permission

  1. 安装拓展包
    composer require "spatie/laravel-permission:~2.7"
  2. 生产数据库迁移文件
    php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider" --tag="migrations"
  3. permission 数据库表结构


    Permission_第1张图片
    permission table
  4. 配置
    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');

你可能感兴趣的:(Permission)