ThinkPHP6中间件的使用+完整代码实例
0
4715
2022年1月18日
定义中间件
可以通过命令行指令快速生成中间件
php think make:middleware Check
这个指令会 app/middleware目录下面生成一个Check中间件。
<?php
namespace app\middleware;
class Check {
/**
* 处理请求
*
* @param \think\Request $request
* @param \Closure $next
* @return Response
*/
public function handle($request, \Closure $next) {
//
if (empty($request->session('username'))) {
return redirect(url('user/login'));
}
return $next($request);
}
}
中间件的入口执行方法必须是handle方法,而且第一个参数是Request对象,第二个参数是一个闭包。
中间件handle方法的返回值必须是一个Response对象。
在这个中间件中我们判断当前请求的name参数等于think的时候进行重定向处理。否则,请求将进一步传递到应用中。要让请求继续传递到应用程序中,
只需使用 $request 作为参数去调用回调函数 $next 。
控制器中使用
插入一行代码:
protected $middleware = ['app\middleware\Check::class'];
附:登录的代码
public function login() {
if (Request::isGet()) {
return view();
} else {
// 接受登陆的数据
$username = input('username');
$pwd = input('pwd');
// 验证
$data = Db::table('user')->where('username', $username)->find();
if (empty($data)) {
return $this->error('用户不存在,请注册', 'reg');
} else {
if ($pwd !== $data['pwd']) {
return $this->error('密码错误');
}
// 保存到session
session('username', $username);
return $this->success('登陆成功', 'show');
}
}
}
这个主题简介啊