![](/img/trans.png)
[英]Authentication and Authorization with Django GraphQL JWT and Graphene Relay
[英]how to customize django jwt graphql authentication
嗨,我正在嘗試自定義
jwt graphql Django 默認身份驗證
我需要使用用戶名或電子郵件實現登錄
普通的 Django 我們自定義了身份驗證后端。
mutation{
tokenAuth(username:"myemail@email.com"
password:"pass")
{
token
}
}
使用用戶名進行身份驗證
mutation{
tokenAuth(username:"myname"
password:"pass")
{
token
}
}
正常的用戶名工作正常。
我如何通過 jwt graphql 中的用戶名或電子郵件對用戶進行身份驗證
我試過這個鏈接
https://django-graphql-jwt.domake.io/en/latest/customizing.html
我對此沒有任何想法...
有沒有人對此有任何想法?
您必須在模型級別而不是在 JWT 中進行更改,JWT 將隨之而來,因為 JWT 只是幕后發生的事情的演示。
看看下面的鏈接,也許對你有幫助! :)
免責聲明 - 媽媽的回答應該有效。 寫到一半時,我意識到我錯了,但我仍然想向您展示我想提出的建議。 它展示了 JWT TokenAuth 突變的作用以及一種完全利用它的方法。
graphql_jwt.decorators.token_auth
以查看兩個字段,而不僅僅是一個像這樣(未經測試):
def two_field_token_auth(f):
@wraps(f)
@setup_jwt_cookie
@csrf_rotation
@refresh_expiration
def wrapper(cls, root, info, password, **kwargs):
context = info.context
context._jwt_token_auth = True
username = kwargs.get('username')
email = kwargs.get('email')
user = your_auth_method(
request=context,
username=username,
email=email,
password=password,
)
if user is None:
raise exceptions.JSONWebTokenError(
_('Please enter valid credentials'),
)
if hasattr(context, 'user'):
context.user = user
result = f(cls, root, info, **kwargs)
signals.token_issued.send(sender=cls, request=context, user=user)
return maybe_thenable((context, user, result), on_token_auth_resolve)
return wrapper
class TwoFieldJWTMutation(JSONWebTokenMutation):
@classmethod
@two_field_token_auth
def mutate(cls, root, info, **kwargs):
return cls.resolve(root, info, **kwargs)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.