Start
权限设计是后台管理很重要的一个功能,所以要好好设计。
PHP 已经有很多这方面的packages了,就不用我们重复造轮子了。当然,如果你愿意可以从头开始~
PS
以前做权限认证的方式有好几种,我说说常用的两种吧!
1. 每一个页面认证当前需要的权限一次
2. 在统一的地方(中间件)验证
先上一下简单的表结构(只保留重要的信息)数据库的模型 ER 图
(ps:这个设计中,用户不会直接拥有权限,只能通过角色继承权限。有很多packages
会提供用户可以直接拥有权限功能)
Model
模型关联关系处理:
1. User 模型
<?php
namespace App\Models;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
use Notifiable;
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
// 用户和角色的模型关联关系
public function roles()
{
return $this->belongsToMany(Role::class);
}
/****************************************
* 封装一个方法方便使用
* 1. 需要的权限
* 2. 遍历当期那用户拥有的所有角色
* 3. 再通过角色判断是否有当前需要的权限
****************************************/
public function hasPermission($permissionName)
{