hace 4 meses
Usando la biblioteca Django-Graphql-Jwt para autenticación JWT en Django Graphene
Para autenticar a los usuarios en tu aplicación Django Graphene utilizando tokens JWT (JSON Web Tokens), puedes utilizar la biblioteca Django-Graphql-Jwt. En este artículo, te mostraremos cómo instalar y configurar esta biblioteca en tu proyecto Django.
1. Instalación
Para comenzar, debes instalar la biblioteca Django-Graphql-Jwt utilizando pip:
pip install django-graphql-jwt
2. Configuración del proyecto
Después de instalar la biblioteca, debes agregar el middleware y el parámetro de configuración en tu archivo settings.py:
MIDDLEWARE = [
# ...
'graphql_jwt.middleware.JSONWebTokenMiddleware',
]
GRAPHQL_JWT = {
'JWT_SECRET_KEY': 'mi_clave_secreta',
'JWT_ALGORITHM': 'HS256',
}
3. Configuración del esquema de GraphQL
A continuación, debes agregar la autenticación JWT al esquema de GraphQL en tu archivo schema.py:
from graphene_django.types import DjangoObjectType
from graphene import ObjectType, String, Boolean, ID, InputObjectType, register_enum_type
from graphene_jwt_auth import JSONWebTokenAuth
from django.contrib.auth.models import User
class UserType(DjangoObjectType):
class Meta:
model = User
class Query(ObjectType):
me = JSONWebTokenAuth.Field(UserType)
@JSONWebTokenAuth.permission_classes([JSONWebTokenAuth.permissions.IsAuthenticated])
def my_private_data(self, info):
return {'message': 'Bienvenido!'}
4. Creación de mutaciones para la autenticación
Por último, debes crear mutaciones para la autenticación y la renovación de tokens JWT en tu archivo schema.py:
class Mutation(ObjectType):
login = JSONWebTokenAuth.Mutation.obtain_and_return_auth_token
refresh_token = JSONWebTokenAuth.Mutation.refresh_token
5. Creación de una vista para la autenticación
Finalmente, debes crear una vista para la autenticación de usuarios en tu archivo views.py:
from django.shortcuts import render
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import status
from graphene_jwt_auth import ObtainJSONWebToken, RefreshJSONWebToken
class ObtainJSONWebTokenView(ObtainJSONWebToken):
serializer_class = MyObtainJSONWebTokenSerializer
class RefreshJSONWebTokenView(RefreshJSONWebToken):
serializer_class = MyRefreshJSONWebTokenSerializer
class MyObtainJSONWebTokenSerializer(ObtainJSONWebTokenSerializer):
@classmethod
def get_user(cls, username):
try:
return User.objects.get(username=username)
except User.DoesNotExist:
raise serializers.ValidationError('Usuario no encontrado')
class MyRefreshJSONWebTokenSerializer(RefreshJSONWebTokenSerializer):
pass
Espero que estos pasos te ayuden a integrar la autenticación JWT en tu aplicación Django Graphene utilizando la biblioteca Django-Graphql-Jwt. ¡Buena suerte con tu proyecto!
Si quieres conocer otros artículos parecidos a Cómo usar la biblioteca Django-Graphql-Jwt para autenticación JWT en Django Graphene puedes visitar la categoría Python.
Deja una respuesta