首页> 实战笔录 >PHP开发笔记 >ThinkPHP ThinkPHP
TP6利用Session实现前置中间件验证登录
作者:小萝卜 2024-04-19 【 TP6 中间件 】 浏览 1866
简介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)
相关文章
- TP8使用注解+中间件实现在用户在后台某些特定操作的日志收集
- tp5 报错variable type error: array怎么解决
- TP6图片上传怎么验证图片的大小和类型?
- TP6/ThinkPHP6怎么获取表前缀
- SQLSTATE[42S22]: Column not found: 1054 Unknown column 'Attr_id' in 'where clause'
- tp5 致命错误: Class 'think\route' not found
- TP5.1实现微信小程序用户登录后端代码分享
- TP5/6验证器验证身份号(使用自定义验证规则)
- TP5.1 钩子与行为应用
- TP5.1模板继承
