博主信息
博文 19
粉丝 1
评论 0
访问量 20520
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
菜单系统__随不同权限管理员登陆而不同
海阔天空
原创
1028人浏览过

菜单系统__随不同权限管理员登陆而不同

管理员权限可能各不相同,菜单系统应只显示其有权限的菜单。

  • 1、通过权限中间件获得权限数据

    1. //权限校验中间件
    2. class Rightvalidate
    3. {
    4. public function handle($request, Closure $next)
    5. {
    6. //取出用户信息
    7. $admin=Auth::user();
    8. $gid=$admin->gid;//获取当前用户的角色gid;
    9. $group=DB::table('admin_group')->where('gid',$gid)->item();
    10. if(!$group){
    11. return response('不存在该角色',200);
    12. }
    13. $rights=[];
    14. if ($group['rights']){
    15. //获取用户权限数组
    16. $rights=json_decode($group['rights'],true);
    17. }
    18. //当前用户访问的是哪个菜单
    19. $namespace=$request->route()->action['namespace'];
    20. $res=$request->route()->action['controller'];
    21. //获得控制器和方法
    22. $res=str_replace($namespace.'\\','',$res);
    23. //获得表示控制器和方法的数组
    24. $res=explode('@',$res);
    25. //查询当前url对应的菜单
    26. $cur_menu=DB::table('admin_menu')->where('controller',$res[0])->where('action',$res[1])->item();
    27. if(!$cur_menu){
    28. return response('该功能不存在',200);
    29. }
    30. //判断该mid是否在$rights数组中
    31. if(!in_array($cur_menu['mid'],$rights)){
    32. //使用助手函数response()响应,第一个参数为信息,第二个参数为状态码;
    33. return response('权限不足',200);
    34. }
    35. $admin->rights=$rights;
    36. $admin->right_title=$group['title'];
    37. $request->admin=$admin;
    38. return $next($request);
    39. }
    40. }
  • 2、筛选登陆管理员有权限的菜单数据
    1. // 框架主页
    2. class Home extends Controller
    3. {
    4. public function index(Request $res){
    5. $data['admin']=$res->admin;
    6. $data['menus']=DB::table('admin_menu')->where('pid',0)->whereIn('mid',$data['admin']['rights'])->where('ishidden',0)->where('status',0)->get()->all();
    7. foreach ($data['menus'] as $key=>$val){
    8. $childs=DB::table('admin_menu')->whereIn('mid',$data['admin']['rights'])->where('pid',$val->mid)->where('ishidden',0)->where('status',0)->get()->all();
    9. $val->child=$childs;
    10. }
    11. return view('admins/home/index',$data);
    12. }
    13. }
    效果图


总结:
1、充分利用Auth::user()提供的数据。
2、已经在权限中间件中编码获得权限数据,要充分利用。
3、对多维数组加强学习。在循环中使用率很高,对键名、值的读取、添加要熟练掌握。

批改老师:WJWJ

批改状态:合格

老师批语:写的非常好!
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学