0
点赞
收藏
分享

微信扫一扫

laravel8鉴权登录

Python芸芸 2022-02-28 阅读 64
//登录
    public function loginDo(CheckLogin $request)
    {
        $postData=$request->all();
//        auth登录
        $data=auth()->attempt(['username'=>$postData['username'],'password'=>$postData['password']]);
        if(!$data){
            return redirect('admin/login')->withErrors(['error'=>'用户名或密码错误']);
        }
        session(['username'=>$postData['username']]);
        $id=auth()->id();
        $res=User::with(['Role','Role.Node'])->where('id',$id)->get()->toArray();
//        根据角色查所有权限
        $datas=[];
        foreach($res as $val) {
            $datas = $val['role']['node'];
        }
        $routeName=array_column($datas,'route_name');
//        权限存缓存
        session(['node'=>$routeName]);
        return redirect('index');
    }

中间件:

  public function handle(Request $request, Closure $next)
    {
//        检测用户是否登录
        if(!auth()->check()){
            return redirect('admin/login')->withErrors(['error'=>'请登录']);
        }
        return $next($request);
    }
//        取出缓存中的拥有权限
        $node=session('node');
//        dd($node);
//        权限验证
        if(auth()->user()['username']!=config('admin.admin')){
            if(!in_array($request->path(),$node)){
                return redirect('welcome')->withErrors('权限不足');
            }
        }
        return $next($request);
    }
举报

相关推荐

0 条评论