JSON Web Token (JWT) is an open standard (RFC 7519) that defines a compact and self-contained way for securely transmitting information between parties as a JSON object. This information can be verified and trusted because it is digitally signed. JWTs can be signed using a secret (with the HMAC algorithm) or a public/private key pair using RSA or ECDSA. ~jwt.io

from rest_framework.viewsets import ViewSet
from rest_framework.response import Response
from rest_framework import status
from jwt_wala.utils import GenerateAccessTokenUtil
class AccessTokenView(ViewSet):
def create(self, request):
print("data = ", request.data)
data = {
"user_uuid": request.data["user_uuid"],
"user_type": request.data["user_type"]
}
access_token = GenerateAccessTokenUtil\
.access_token_generator(data)
api_response = {
"error": False,
"message": "Access token",
"access_token": access_token
}
return Response(
api_response,
status=status.HTTP_200_OK
)
import os
import jwt
import datetime
import json
from django.conf import settings
class GenerateAccessTokenUtil:
@staticmethod
def access_token_generator(data):
access_token_payload = {
"user_uuid": data['user_uuid'],
"user_type": data['user_type'],
"exp": datetime.datetime.utcnow() \
+ datetime.timedelta(days=5, minutes=10),
"iat": datetime.datetime.utcnow()
}
access_token = jwt.encode(
access_token_payload,
settings.SECRET_KEY,
algorithm="HS256"
)
return access_token
import os
import json
import jwt
import datetime
from django.conf import settings
class GenerateRefreshTokenUtil:
@staticmethod
def refresh_token_generator(data):
payload = {
"user_uuid": data["user_uuid"],
"user_type": data["user_type"],
"iat": datetime.datetime.utcnow(),
"nbf": datetime.datetime.utcnow() \
+ datetime.timedelta(minutes=5),
"exp": datetime.datetime.utcnow() \
+ datetime.timedelta(days=3, minutes=5)
}
refresh_token = jwt.encode(
payload,
settings.REFRESH_TOKEN_SECRET,
algorithm="HS256"
)
return refresh_token
BONUS SECTION: Docker Containerization
Get more insights like this delivered to your inbox weekly.