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 \app\demo\model\User();
$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
\think\middleware\SessionInit::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(\app\middleware\Check::class);