| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- <?php
- namespace App\Http\Middleware;
- use Closure;
- use Illuminate\Http\Request;
- class CheckToken
- {
- public function handle(Request $request, Closure $next)
- {
- // 检查是否有 token
- $token = $this->getTokenFromRequest($request);
- if (!$token || $token === 'null' || $token === 'undefined') {
- // 将 token 设置为空
- $request->headers->set('Authorization', '');
- return response()->json([
- 'code' => 401,
- 'timestamp' => time(),
- 'msg' => '请先登录',
- 'data' => []
- ]);
- }
- return $next($request);
- }
- /**
- * 从请求中获取 token
- */
- protected function getTokenFromRequest(Request $request): ?string
- {
- $token = $request->bearerToken();
- // 如果没有 bearer token,尝试从其他位置获取
- if (!$token) {
- $token = $request->query('token');
- }
- if (!$token) {
- $token = $request->input('token');
- }
- // 检查 token 是否有效
- if ($this->isEmptyToken($token)) {
- return null;
- }
- return $token;
- }
- /**
- * 检查 token 是否为空
- */
- protected function isEmptyToken($token): bool
- {
- return empty($token) ||
- $token === 'null' ||
- $token === 'undefined' ||
- $token === 'Bearer' ||
- trim($token) === '';
- }
- }
|