EpicEvents Journal

Authentication with JWT (JSON Web Token) and CLI Logout


This section explains how the JWTTokenMixin is implemented for managing JWT-based authentication in a Django management command. The mixin facilitates login, token generation, verification, user retrieval, and logout in the command-line interface (CLI).

Key Features:

1. JWT Token Generation: A JWT token is generated when the user logs in, saved to a file (token.txt), and used for subsequent requests.
2. Token Verification: The token is validated to ensure the user is authenticated.
3. User Retrieval: The user is associated with the JWT token, and the user object is retrieved from the database.
4. Logout: The logout() method clears the token and payload, effectively logging the user out of the CLI.

Explanation of Key Methods:

    • generate_token(): This method generates a JWT token for a given user and saves it to a file (token.txt). It takes in user_id, email, and an optional expires_delta parameter (which defaults to 1 hour).

    • verify_token(): This method decodes the JWT token and validates it. It also handles token expiration and invalid token errors. If the token is expired or invalid, it triggers a login request.

    • get_user(): This method retrieves the user corresponding to the JWT token. It first verifies the token and then checks the user_id from the token's payload. If a valid user is found, it returns the user object.

    • login(): This method prompts the user for their email and password, authenticates the user, and generates a new JWT token upon successful login. The token is saved to the class attribute token.

    • logout(): This method clears the class's token and payload attributes, essentially logging the user out. It also overwrites the token.txt file with empty content.

    • handle(): The command handler. It verifies if the token.txt file exists, reads the token from it, and retrieves the user associated with the token. If the file doesn't exist, it creates it.

Usage Example:

1. Login:

    • The user runs the command, provides their email and password.
    • If authentication is successful, a JWT token is generated and saved in token.txt.

2. Logout:

    • The user can log out, which will clear the token.txt file and reset the session.

Security Considerations:

    • The JWT token is generated using the HS256 algorithm with a secret key (TOKEN_SECRET_KEY). Ensure that the key is stored securely, and do not expose it in your codebase.


Designed by BootstrapMade and modified by DoriDoro