I'm using Django Graphql Auth in my api but when I want to get the current logged in user always get the Anonymous.
# settings.py MIDDLEWARE = [ # ... 'django.contrib.auth.middleware.AuthenticationMiddleware', # ... ] AUTH_USER_MODEL = 'base.User' AUTHENTICATION_BACKENDS = [ # 'graphql_jwt.backends.JSONWebTokenBackend', 'graphql_auth.backends.GraphQLAuthBackend', 'django.contrib.auth.backends.ModelBackend', ] GRAPHENE = { 'SCHEMA_INDENT': 4, 'SCHEMA': 'byt.schema.schema', 'MIDDLEWARE': [ 'graphql_jwt.middleware.JSONWebTokenMiddleware', 'graphene_django_extras.ExtraGraphQLDirectiveMiddleware' ] } GRAPHQL_AUTH = { 'LOGIN_ALLOWED_FIELDS': ['email', 'username'], # ... } GRAPHQL_JWT = { 'JWT_VERIFY_EXPIRATION': True, 'JWT_LONG_RUNNING_REFRESH_TOKEN': True, 'ALLOW_LOGIN_NOT_VERIFIED': True, 'JWT_ALLOW_ARGUMENT': True, "JWT_ALLOW_ANY_CLASSES": [ "graphql_auth.mutations.Register", "graphql_auth.mutations.VerifyAccount", "graphql_auth.mutations.ResendActivationEmail", "graphql_auth.mutations.SendPasswordResetEmail", "graphql_auth.mutations.PasswordReset", "graphql_auth.mutations.ObtainJSONWebToken", "graphql_auth.mutations.VerifyToken", "graphql_auth.mutations.RefreshToken", "graphql_auth.mutations.RevokeToken", "graphql_auth.mutations.VerifySecondaryEmail", ], } EMAIL_BACKEND = 'sendgrid_backend.SendgridBackend'
# custom user model class User(AbstractUser): ROLES = ( ('ADMIN', 'ADMIN'), ('USER', 'USER'), ('BUSINESS', 'BUSINESS'), ('TALENT', 'TALENT') ) first_name = models.CharField(max_length=254, default="John") last_name = models.CharField(max_length=254, default="Doe") email = models.EmailField( blank=False, max_length=254, verbose_name="email address") role = models.CharField(max_length=8, choices=ROLES, default="USER") USERNAME_FIELD = "username" # e.g: "username", "email" EMAIL_FIELD = "email" # e.g: "email", "primary_email" def __str__(self): return self.username
# schema user import graphene from graphene_django import DjangoObjectType from graphql_auth import mutations from graphql_auth.schema import UserQuery, MeQuery class AuthMutation(graphene.ObjectType): register = mutations.Register.Field() verify_account = mutations.VerifyAccount.Field() resend_activation_email = mutations.ResendActivationEmail.Field() send_password_reset_email = mutations.SendPasswordResetEmail.Field() password_reset = mutations.PasswordReset.Field() password_change = mutations.PasswordChange.Field() archive_account = mutations.ArchiveAccount.Field() delete_account = mutations.DeleteAccount.Field() update_account = mutations.UpdateAccount.Field() send_secondary_email_activation = mutations.SendSecondaryEmailActivation.Field() verify_secondary_email = mutations.VerifySecondaryEmail.Field() swap_emails = mutations.SwapEmails.Field() # django-graphql-jwt inheritances token_auth = mutations.ObtainJSONWebToken.Field() verify_token = mutations.VerifyToken.Field() refresh_token = mutations.RefreshToken.Field() revoke_token = mutations.RevokeToken.Field() class Query(UserQuery, MeQuery, graphene.ObjectType): pass class Mutation(AuthMutation, graphene.ObjectType): pass
The mutation tokenAuth returns a valid token but when I try to execute the 'me' query with that token in header the query returns null because info.context.user is the Anonymous.
What am I missing?
https://stackoverflow.com/questions/67249753/django-graphql-auth-not-logged-in-user April 25, 2021 at 12:24PM
没有评论:
发表评论