如遇报错:Class 'AppRole' not found
这是命名空间的问题,两种解决办法:
1.把Role.php、Permission.php和用户表模型User.php 命名空间改为 App
2.根据路径 /vendor/zizaco/entrust/src/config.php
将return的数组键为'role'的值改为项目中Role.php实际命名空间
键'user'、'permission'同理,便可解决
文章插图
Table role_user 数据
- 登陆
public function Login(){// 此处应接受前端数据进行验证// 这边不再赘述 直接模拟登陆// 用户 admin 登陆$user_info = User::where('name', 'admin')->first();// 用户 test 登陆// $user_info = User::where('name', 'test')->first();// 将用户信息存入Sessionsession(['user_info' => $user_info]);return view('index');}
至此,测试所需数据全部创建完毕权限的使用
- 根据上面设置的角色组的权限建立测试html(index.blade.php)
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>权限测试</title></head>@if(session('user_info')->can('menu_display'))<h1>菜单</h1>@endif@if(session('user_info')->can('btn_display'))<button>按钮</button>@endif<body></body></html>
- 用户 admin 拥有所有权限,登陆之后,应当显示【菜单】以及【按钮】,如下图:
文章插图
用户 admin 登陆页面显示情况
- 用户 test 只拥有 【菜单可见】权限,应当只显示菜单,如下图:
文章插图
【PHP Laravel框架用户权限管理,按钮级别控制】用户 test 登陆页面显示情况
- 后端对于角色的判断,不同角色执行不同代码
public function judgeRoles(){// 拥有 admin 角色的用户执行if (session('user_info')->hasRole('admin')) {// 业务代码return 'admin角色业务代码执行完毕';}// 拥有 ordinary 角色的用户执行if (session('user_info')->hasRole('ordinary')) {// 业务代码return 'ordinary角色业务代码执行完毕';}
至此;关于PHP权限设置就完成了以上都为测试学习代码,实际生产环境中还需要根据业务需求对代码进行修改整合,但是基础的权限设计功能已经实现 。
谢谢!
最后的话:
如果各位大佬有什么更好的方法,请评论或私信我,我会及时回复的,欢迎各位大佬一起来探讨技术 。
如果各位感觉我的文章对您有帮助的话,请您不要吝啬您的点赞!
祝大家技术一节更比一节高!
推荐阅读
- 小程序云托管无需服务器部署PHP
- 字节跳动 Go RPC 框架 KiteX 性能优化实践
- PHP使用http_build_query构造URL字符串的方法
- shiro 安全框架入门,看这一篇就够了
- 什么是2021年最佳的后端开发框架
- Shiro框架详解
- 用 C# 实现一个简单的日志框架
- 探索3种顶级「集成框架」Apache、Spring和Mule
- 基于阿里Ant Design构建的高颜值开源管理后台UI框架
- Spring框架是怎么解决Bean之间的循环依赖的