ThinkPHP6使用中间件实现后台登录验证方案
ThinkPHP6的中间件主要用于拦截或过滤应用的HTTP请求,并进行必要的业务处理。更多的是将业务和一些逻辑做了解耦分离,使整个业务更清楚,不会在一个地方写一大堆代码。比如我们要控制写日志、权限认证、来源判断、白名单、返回Json等都可以写在不同的中间件里面,避免了将这些代码写到一个地方去判断,也可以重复利用代码。所以说,适当用上中间件来写,还是挺爽的。
在TP6中,有好几种不同类型的中间件,像全局中间件、应用中间件、路由中间件、控制器中间件,它们之间的执行顺序也是按上面的来的。更多介绍可以参考官方的文档:https://www.kancloud.cn/manual/thinkphp6_0/1037493
全局中间件
在app/middleware.php定义的中间件。
return [
// Session初始化
\think\middleware\SessionInit::class
];
应用中间件
这个是在应用下面定义的,如我的app目录下面有 api,admin应用,那么在app/api/middleware.php定义
return [
\app\api\middleware\Log::class
];
路由中间件
就是在注册路由时,可以注册中间件,执行这个路由时,执行相对应的中间件。
Route::post('create-order','app\\api\\controller\\order\OrderPay@createOrder')->middleware(app\\middleware\Auth::class);
控制器中间件
在控制器中定义$middleware属性,如示例,当访问index控制时,就会执行中间件
class Index extends FrontController
{
protected $middleware = [ \app\admin\middleware\CheckAdmin::class];
public function index()
{
echo 'test';
}
}
具体使用例子:
这里的例子主要是实现后台验证是否登陆,没有登录就跳到登录页。
1、可以通过命令行指令快速生成中间件,得到对应的文件,路径:app\middleware\CheckAdmin
php think make:middleware CheckAdmin
2、然后目录下的config/app.php文件中的deny_app_list里面要加上middleware,因为不要让外部访问到中间件
3、因判断登录需要用到session,而tp6 默认不开启session 那么在中间件中需要开启session,app目录下的middleware.php 文件 开启session初始化,去掉注释即可
4、之后在刚才建的中间件文件中判断登录与否(记得引入seesion)
5、在后台Base中使用中间件, 这样后台所有的方法都会走中间件判断登陆与否,中间件排查这办法不做验证。
'except' => ['login','login_in']
- jquery表单input、select、radio、check监听事件集合
- aliplayer播放器,TcPlayer播放器,xgplayer播放器三款大厂的视频直播播放器对比
- PHP8.5将于2025年11月20日正式发布,还在用PHP 5.6的老版本用户该何去何从?
- webuploader简单便捷实现多个按钮上传、多个实例上传
- HTTP中GET、POST、PUT与DELETE的区别和用法
- 推荐收藏7个开源且实用的CSS 框架 / 组件
- ThinkPHP6多条件搜索查询,表达式查询 FIND_IN_SET查询
- 开源的度量分析与可视化套件 Grafana 9正式发布
- 十款好用到爆的 MySQL 可视化管理工具推荐
- IE11将停用并停止支持,此后IE正式谢幕,Edge接棒

