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']
- 图解设置二级、三级域名泛解析,部署saas系统
- ThinkPHP发布安全更新版本(V6.1.0/V6.0.14),移除对think-filesystem库的依赖
- ThinkPHP 6.1.2 版本发布,兼容 PHP8.2以及对ThinkORM3.0 版本的支持
- 勾股博客介绍及安装教程
- 原生js和jquery方式获取浏览器的各种高度和宽度(页面width和height)
- 阿里云OSS文件上传速度技巧之内网地址上传
- 四行JavaScript代码实现禁止复制网站内容
- Nginx实现二级域名或三级域名泛解析
- 编辑器vscode如何预览markdown文件?
- 企业OA系统开发一般需要多久?开发费用怎样?