PHP学习心得


permission RBAC 权限管理

<h2>项目初始化</h2> <pre><code class="language-bash"># 指定 laravel 版本安装 composer create-project --prefer-dist laravel/laravel permission56 5.6.* # 不指定 laravel 版本安装 composer create-project --prefer-dist laravel/laravel permission cd permission composer require spatie/laravel-permission # 安装指定版本 permission,比如在 laravel 5.6 版本下安装 composer require "spatie/laravel-permission:~2.7" # 到 vendor 目录下查看是否有 spatie 文件夹及子文件夹 laravel-permission</code></pre> <h2>创建数据表</h2> <ul> <li>修改 .env 文件数据库连接帐号信息</li> </ul> <h5>迁移文件到 database/migrations 目录下</h5> <pre><code class="language-php">// 将扩展包提供的数据库迁移文件发布到 database/migrations 目录下 php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider" --tag="migrations"</code></pre> <ul> <li> <p>文件 vendor/spatie/laravel-permission/database/migrations/create_permission_tables.php.stub </p> <p>复制到 permission56/database/migrations 目录下</p> </li> </ul> <h5>生成相应数据表</h5> <pre><code class="language-php">// 根据database/migrations 目录下 create_permission_tables.php数据库迁移文件生成相应的数据表 php artisan migrate</code></pre> <h5>php artisan migrate生成数据表有</h5> <table> <thead> <tr> <th>表名</th> <th>说明</th> <th>表名</th> <th></th> </tr> </thead> <tbody> <tr> <td>migrations</td> <td>迁移</td> <td>model_has_permissions</td> <td>模型有权限</td> </tr> <tr> <td>model_has_roles</td> <td>模型有角色</td> <td>password_resets</td> <td>密码重置</td> </tr> <tr> <td>permission_role</td> <td>权限角色</td> <td>permissions</td> <td>权限</td> </tr> <tr> <td>role_user</td> <td>角色用户</td> <td>users</td> <td>用户</td> </tr> </tbody> </table> <h2>配置文件</h2> <pre><code class="language-php">// 扩展包提供的权限配置文件 permission.php 发布到 config 目录下,方便对默认配置进行修改 php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider" --tag="config"</code></pre> <ul> <li>配置文件 vendor/spatie/laravel-permission/config/permission.php 就复制到 config/permission.php</li> </ul> <h2>模型类调整</h2> <ul> <li>app/User.php 文件中使用 <code>HasRoles</code> trait 提供权限相关方法</li> </ul> <pre><code class="language-php">use Spatie\Permission\Traits\HasRoles; class User extends Authenticatable { use HasRoles; }</code></pre> <h2>构建视图页面所需表单</h2> <h5>查看 laravel 5.6 版本下安装 laravelcollective/html,其所需要的对应版本是多少</h5> <ul> <li><a href="https://packagist.org/packages/laravelcollective">https://packagist.org/packages/laravelcollective</a></li> <li>laravelcollective/html 版本为:5.6</li> </ul> <pre><code class="language-bash">composer require laravelcollective/html 5.6</code></pre> <h2>基本使用</h2> <ul> <li>app/User.php 文件中</li> </ul> <pre><code class="language-php">use Spatie\Permission\Models\Role; use Spatie\Permission\Models\Permission; class User extends Authenticatable { public function testRole() { // 创建新的角色和权限 $role = Role::create(['name' =&gt; 'writer']); $permission = Permission::create(['name' =&gt; 'edit articles']); } }</code></pre> <h2>使用实例</h2> <ul> <li>为用户分配文章操作权限</li> </ul> <pre><code class="language-php">// 生成用户登录注册所需的路由、控制器、视图等代码文件 php artisan make:auth // 到 app/Http/Controllers/Auth 路径下查看相关文件</code></pre>

页面列表

ITEM_HTML