欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

中间件防止非法登录

时间:2023-06-20

1、在控制器中 当登录成功时 用Session 存入登录数据

public function save(Request $request) { try { //接值 $data=$request->all(); //验证 validate(Error::class)->batch(true)->check([ 'username' => $data['username'], 'password' => $data['password'], ]); //连接数据库 $obj = new appdemomodelUser(); $res = $obj->loginUser($data); if($res){ if($res['password']==$data['password']){ //记录 Session::set('username',$data['username']); //登录日志 登录成功记录登录信息 Log::write('用户'.$data['username'].'在'.date('Y-m-d H:i:s'.'登录成功')); return success(200,'登录成功',''); }else{ return fail(2001,'密码错误',''); } }else{ return fail(2001,'账号错误',''); } } catch (ValidateException $e) { // 验证失败 输出错误信息 $error=$e->getError(); //返回错误信息 return fail(2001,$error,''); } }

2、在模块中的 middleware.php 中开启session

//开启session thinkmiddlewareSessionInit::class

3、创建中间件

php think make:middleware Check

4、在中间件

public function handle($request, Closure $next) { //查看数据 $name = Session::get("username"); $response =$next($request); //未登录 重定向登录页 if(empty($name) ){ return redirect("login"); } return $response; }

5、在路由中使用

//用户列表展示Route::any('shows','User/index')->middleware(appmiddlewareCheck::class);

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。