Files
杨志 eed3540f3d up
2026-01-21 09:18:19 +08:00

53 lines
1.5 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
declare (strict_types = 1);
namespace app\middleware;
/**
* 登录验证中间件
*/
class Auth
{
/**
* 处理请求
*
* @param \think\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, \Closure $next)
{
// 检查是否已登录
$username = session('username');
// 获取路径信息和方法名
$pathinfo = $request->pathinfo();
$controller = $request->controller(true);
$action = $request->action(true);
// 判断是否为API请求
// 1. 路径包含 /crawler/ 且不是 /crawler 本身
// 2. 或者是 crawler 控制器的非 index 方法
// 3. 或者是AJAX请求
$isApiRequest = ($pathinfo !== 'crawler' && strpos($pathinfo, 'crawler/') === 0) ||
($controller === 'crawler' && $action !== 'index') ||
$request->isAjax() ||
$request->header('X-Requested-With') === 'XMLHttpRequest';
if (empty($username)) {
// 如果是API请求返回JSON
if ($isApiRequest) {
// 直接返回JSONThinkPHP的json()函数会自动设置响应头
return json([
'code' => 0,
'msg' => '请先登录',
]);
}
// 否则跳转到登录页
return redirect('/login');
}
return $next($request);
}
}