JWT 인증 및 인증에 PHP를 사용하는 방법은 무엇입니까?
JWT(JSON 웹 토큰)는 인증 및 승인을 위한 개방형 표준입니다. 이는 클라이언트와 서버 간에 안전하고 신뢰할 수 있는 방식으로 데이터를 전송하며 서버가 요청을 보내는 사용자의 신원을 확인할 수 있도록 합니다. 이 기사에서는 PHP를 사용하여 JWT 인증 및 인증 기능을 구현하는 방법을 소개합니다.
composer require firebase/php-jwt lcobucci/jwt
<?php use FirebaseJWTJWT; use LcobucciJWTBuilder; use LcobucciJWTSignerHmacSha256; // 用户登录成功后,生成JWT function generateJWT($userId, $secretKey) { $time = time(); $token = (new Builder()) ->issuedBy('example.com') // 发行者 ->permittedFor('example.com') // 接受者 ->identifiedBy('1', true) // 标识符 ->issuedAt($time) // 发行时间 ->expiresAt($time + 3600) // 过期时间 ->withClaim('userId', $userId) // 自定义声明 ->getToken(new Sha256(), new Key($secretKey)); return $token; } $jwt = generateJWT(1, 'your-secret-key'); echo $jwt;
<?php use FirebaseJWTJWT; // 验证并解析JWT function verifyJWT($jwt, $secretKey) { try { $decoded = JWT::decode($jwt, $secretKey, ['HS256']); return $decoded; } catch (Exception $e) { return null; } } $jwt = $_SERVER['HTTP_AUTHORIZATION']; $decoded = verifyJWT($jwt, 'your-secret-key'); if ($decoded) { $userId = $decoded->userId; echo "用户ID:$userId"; } else { echo "无效的JWT"; }
<?php use FirebaseJWTJWT; use LcobucciJWTBuilder; use LcobucciJWTSignerHmacSha256; // 刷新JWT function refreshJWT($jwt, $secretKey) { $current = time(); $decoded = JWT::decode($jwt, $secretKey, ['HS256']); if ($decoded->exp - $current > 1800) { // 如果剩余有效期超过30分钟,则不刷新JWT return $jwt; } $newToken = (new Builder()) ->issuedBy($decoded->iss) ->permittedFor($decoded->aud) ->identifiedBy($decoded->jti, true) ->issuedAt($current) ->expiresAt($current + 3600) ->withClaim('userId', $decoded->userId) ->getToken(new Sha256(), new Key($secretKey)); return $newToken; } $jwt = $_SERVER['HTTP_AUTHORIZATION']; $refreshedJWT = refreshJWT($jwt, 'your-secret-key'); echo $refreshedJWT;
위 단계를 통해 PHP를 사용하여 JWT 인증 및 인증 기능을 쉽게 구현할 수 있습니다. 물론 실제 적용에는 더 많은 보안 고려 사항과 관행이 필요하며 특정 요구 사항에 따른 조정이 필요합니다. 이 글이 JWT를 이해하고 사용하는 데 도움이 되기를 바랍니다!
위 내용은 JWT 인증 및 인증에 PHP를 사용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!