大致会用到五张表:用户表、角色表、功能表,还有他们之间互相关联的表:用户与角色表、角色与功能表
?
?在登录是检测人员权限
//根据用户id查询角色id
//根据角色id查询权限id
//根据权限查处权限
$role_id = $res->role_id;
if($role_id!=1){
$role = Role::find($role_id)->toArray();
//根据权限ids查询权限表,
$auth = Auth::whereIn('id',$role['role_auth_ids'])->select()->toArray();
$authList = [];
foreach ($auth as $value){
if ($value['auth_a'] && $value['auth_c']){
$authList[] = $value['auth_c'].'/'.$value['auth_a'];
}
}
//缓存
$asd = cache('auth_list',$authList);
}
编写完成后在中间件中检测
# 权限检测
# controller()获取当前访问的控制器名a
# action()获取当前访问的方法名
$current = strtolower($request->controller()).'/'.strtolower($request->action());
$authList = cache('auth_list');
# 获取缓存中的权限列表
if (!in_array($current,$authList) && $user_id != 1) {
return fail('','无权限访问');
}
# token 认证成功、并且有权限访问
完成后在postMan测试成功就完成了
|