1. Go to this page and download the library: Download andrewdyer/jwt-auth library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
andrewdyer / jwt-auth example snippets
use AndrewDyer\JwtAuth\Contracts\JwtSubjectInterface;
class User implements JwtSubjectInterface
{
public function __construct(private int $id) {}
public function getJwtIdentifier(): int|string
{
return $this->id;
}
}
use AndrewDyer\JwtAuth\Contracts\AuthProviderInterface;
class MyAuthProvider implements AuthProviderInterface
{
public function byCredentials(string $username, string $password): ?JwtSubjectInterface
{
// Return a JwtSubjectInterface instance on success, or null on failure
}
public function byId(int|string $id): ?JwtSubjectInterface
{
// Return a JwtSubjectInterface instance, or null if not found
}
}
use AndrewDyer\JwtAuth\Contracts\JwtProviderInterface;
class MyJwtProvider implements JwtProviderInterface
{
public function encode(array $claims): string
{
// Encode the claims array into a signed token string
}
public function decode(string $token): mixed
{
// Decode and verify the token; return the payload as an array or object
}
}
use AndrewDyer\JwtAuth\Claims;
use AndrewDyer\JwtAuth\Contracts\ClaimsFactoryInterface;
use AndrewDyer\JwtAuth\Contracts\JwtSubjectInterface;
class MyClaimsFactory implements ClaimsFactoryInterface
{
public function forSubject(JwtSubjectInterface $subject): Claims
{
$now = time();
return new Claims(
iss: 'my-app',
aud: 'my-api',
iat: $now,
nbf: $now,
exp: $now + 3600,
jti: bin2hex(random_bytes(16)),
sub: $subject->getJwtIdentifier(),
);
}
}
use AndrewDyer\JwtAuth\JwtAuth;
$auth = new JwtAuth(
authProvider: new MyAuthProvider(),
jwtProvider: new MyJwtProvider(),
claimsFactory: new MyClaimsFactory(),
);
use AndrewDyer\JwtAuth\Exceptions\InvalidCredentialsException;
try {
$token = $auth->attempt('[email protected]', 'secret');
} catch (InvalidCredentialsException $e) {
// Credentials did not match a valid user
}
use AndrewDyer\JwtAuth\Exceptions\InvalidTokenException;
try {
$user = $auth->authenticate($token);
} catch (InvalidTokenException $e) {
// Token is invalid or the user no longer exists
}
use AndrewDyer\JwtAuth\Exceptions\InvalidTokenException;
try {
$claims = $auth->parse($token);
echo $claims->sub; // The subject identifier
echo $claims->iss; // The issuer
echo $claims->exp; // Expiry timestamp
} catch (InvalidTokenException $e) {
// Token could not be decoded
}