首页> 实战笔录 >PHP开发笔记 >ThinkPHP ThinkPHP
TP6利用Session实现前置中间件验证登录
作者:小萝卜 2024-04-19 【 TP6 】 浏览 754
简介TP6利用Session实现前置中间件验证登录
文件位置:

步骤1:app\admin\middleware目录新建中间件文件AdminLogin.php
<?php
declare (strict_types = 1);
namespace app\admin\middleware;
use think\facade\Session;
class AdminLogin
{
/**
* 处理请求
*
* @param \think\Request $request
* @param \Closure $next
* @return Response|\think\response\Json
*/
public function handle($request, \Closure $next)
{
$white_list = [
'/awadmin.php/index/index.html',
'/admin/index/index',
'/awadmin.php',
'/awadmin.php/captcha.html',
'/awadmin.php/index/login',
'/awadmin.php/index/getcaptcha'
]; // 白名单,不用验证登录
$request_uri = $_SERVER['REQUEST_URI'];
$pathinfo = explode('?',$request_uri)[0];
$pathinfo = strtolower($pathinfo);
//var_dump($pathinfo,$white_list);die;
//var_dump(Session::has('alogin'));die;
if(!in_array($pathinfo, $white_list)) {
//验证登录
if(Session::get("alogin")!=1){
if($request->isAjax()){
return json(['code'=>9001,'msg'=>"登录失效"]);
}else{
exit('<script language="javascript">top.location.href="'.url('admin/Index/index').'"</script>');
}
}
}
return $next($request);
}
}
步骤2:在app\middleware.php文件注册中间件
我这里注册的是应用中间件,还有路由中间件、全局中间件、控制器中间件等方式看个人需求来使用
<?php
// 全局中间件定义文件
return [
// 全局请求缓存
// \think\middleware\CheckRequestCache::class,
// 多语言加载
// \think\middleware\LoadLangPack::class,
// Session初始化
\think\middleware\SessionInit::class,
//登录验证
'admin_login'=>\app\admin\middleware\AdminLogin::class, //取别名
];
配置后,后台访问任意页面都会先经过中间件验证了
很赞哦! (0)
相关文章
- SQLSTATE[42S22]: Column not found: 1054 Unknown column 'Attr_id' in 'where clause'
- PHP/ThinkPHP实现用户一段时间没有操作,系统自动退出
- TP5利用scp实现从a服务器转移文件到b服务器
- TP6使用JWT实现中间件验证Token,验证用户登录信息
- TP5 模型事务操作
- thinkphp6 使用 jwt 生成 token 中间件验证token
- TP6使用redis操作报错Store [redis] not found.
- TP5 Composer安装JqueryList出错 解决办法
- TP5 关联模型使用(嵌套关联、动态排序以及隐藏字段)
- TP3.2使用join查询实例以及注意事项