Permission

作者: thjxs | 来源:发表于2018-04-09 04:52 被阅读0次

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

        本文链接:https://www.haomeiwen.com/subject/qbavhftx.html