vault-jwt
v1.0.0
Published
A lightweight and secure JWT service for generating and verifying access and refresh tokens
Maintainers
Readme
vault-jwt
A lightweight and secure JWT (JSON Web Token) service for generating, verifying, and managing access and refresh tokens in Node.js applications.
Features
- 🔐 Secure Token Generation: Generate access and refresh tokens with customizable expiration times
- ✅ Token Verification: Verify and validate JWT tokens with automatic error handling
- ⚙️ Customizable Options: Configure token expiration durations for both access and refresh tokens
- 📦 TypeScript Support: Fully typed TypeScript implementation with type definitions
- 🎯 Simple API: Easy-to-use interface for token management
Installation
npm install vault-jwtUsage
Basic Setup
import { JWTService } from "vault-jwt";
// Initialize the JWT service
const jwtService = new JWTService("your-access-secret", "your-refresh-secret");With Custom Expiration Times
const jwtService = new JWTService("your-access-secret", "your-refresh-secret", {
accessTokenExpireIn: "15m",
refreshTokenExpireIn: "7d",
});API Reference
Constructor
new JWTService(accessSecret: string, refreshSecret: string, options?: tokenOption)Parameters:
accessSecret(string): Secret key for signing access tokensrefreshSecret(string): Secret key for signing refresh tokensoptions(optional): Configuration optionsaccessTokenExpireIn(string): Access token expiration time (default: "15d")refreshTokenExpireIn(string): Refresh token expiration time (default: "7d")
Methods
generateAccessToken(payload: tokenPayload): string
Generates a new access token with the provided payload.
Parameters:
payload: Token payload objectuserId(string): User identifier (required)email(string): User email (optional)username(string): Username (optional)
Returns: JWT access token string
Example:
const token = jwtService.generateAccessToken({
userId: "123",
email: "[email protected]",
username: "john_doe",
});generateRefreshToken(payload: tokenPayload): string
Generates a new refresh token with the provided payload.
Parameters:
payload: Token payload object (same structure as access token)
Returns: JWT refresh token string
Example:
const refreshToken = jwtService.generateRefreshToken({
userId: "123",
});verifyAccessToken(token: string): tokenPayload
Verifies and decodes an access token.
Parameters:
token(string): The JWT access token to verify
Returns: Decoded token payload
Throws: Error if token is invalid or expired
Example:
try {
const payload = jwtService.verifyAccessToken(token);
console.log(payload.userId);
} catch (error) {
console.error("Invalid token", error);
}verifyArefreshToken(token: string): tokenPayload
Verifies and decodes a refresh token.
Parameters:
token(string): The JWT refresh token to verify
Returns: Decoded token payload
Throws: Error if token is invalid or expired
Example:
try {
const payload = jwtService.verifyArefreshToken(token);
console.log(payload.userId);
} catch (error) {
console.error("Invalid refresh token", error);
}Complete Example
import { JWTService } from "vault-jwt";
// Initialize service
const jwtService = new JWTService(
"your-secret-access-key",
"your-secret-refresh-key",
{
accessTokenExpireIn: "15m",
refreshTokenExpireIn: "7d",
}
);
// Generate tokens
const payload = {
userId: "user123",
email: "[email protected]",
username: "johndoe",
};
const accessToken = jwtService.generateAccessToken(payload);
const refreshToken = jwtService.generateRefreshToken(payload);
console.log("Access Token:", accessToken);
console.log("Refresh Token:", refreshToken);
// Verify tokens
try {
const accessPayload = jwtService.verifyAccessToken(accessToken);
console.log("Access Token Valid:", accessPayload);
const refreshPayload = jwtService.verifyArefreshToken(refreshToken);
console.log("Refresh Token Valid:", refreshPayload);
} catch (error) {
console.error("Token verification failed:", error);
}License
ISC
Support
For issues, questions, or contributions, please open an issue on the project repository.
