올바르게 이해할 수 있는지 확실하지 않습니다. 장고 Rest 프레임 워크를 사용하여 사용자가 로그인 할 수있게합니다. 사용자 로그인 후 IOS 응용 프로그램 내 경우에는 토큰을 얻고 거기에서 토큰을 사용하여 토큰이 유효한 한 한 번만 로그인해야합니다.Django Rest 프레임 워크 로그인 후 JWT 토큰 받기
나는 사용자 명이나 전자 메일로 로그인하고 curl로 작업하는 토큰을 얻습니다 (JWT 매뉴얼보기와 같이).
어떻게 둘 다 결합합니까? 로그인이 성공하면 로그인 응답 전에 JWT를 호출하고 토큰을 만든 다음 로그인 응답에이를 반환합니다. 응답과 함께 토큰.
이렇게 할 생각이 들지 않아 API 대신 두 가지가 아니라 하나의 호출에서 수행하고 싶습니다. 두 분과 함께 매우 간단하게 보일 수 있지만 필요하지 않은 전화는 내 눈에 띄지 않아야합니다.
class UserLoginSerializer(ModelSerializer):
user_id = IntegerField(read_only=True)
token = CharField(allow_blank=True, read_only=True)
username = CharField(required=False, allow_blank= True)
email = EmailField(label='Email Address', required=False, allow_blank= True)
class Meta:
model = User
fields = [
'user_id',
'username',
'email',
'password',
'token',
]
extra_kwargs = {"password": {"write_only": True}}
def validate(self, data):
user_obj = None
email = data.get("email", None)
username = data.get("username", None)
password = data["password"]
if not email and not username:
raise ValidationError("A username or email is required to login.")
user = User.objects.filter(
Q(email=email) |
Q(username=username)
).distinct()
user = user.exclude(email__isnull=True).exclude(email__iexact='')
if user.exists() and user.count() == 1:
user_obj = user.first()
else:
raise ValidationError("This username/email is not valid!")
if user_obj:
if not user_obj.check_password(password):
raise ValidationError("Incorrect credentials, please try again!")
data["token"] = "SOME RANDOM TOKEN"
data["user_id"] = user_obj.id
return data
나는 내가 필요한 건 그 전에 JWT에서 토큰을 얻을 그리고 난 여기서 뭐하는거야 것처럼 데이터를 반환 할 수있는 방법이며, 데이터에 토큰을 반환하고 있습니다.
감사
jwt보기를 사용하고 있습니까? – arcegk
죄송합니다, 나는 질문을 이해한다고 생각하지 않습니다 .... 장고 휴식 프레임 워크 JWT를 의미합니까? 어떤 의견이 있습니까? "REST framework JWT Auth"라는 Django 프레임 워크가 있는데, 저는 이것을 사용하고 있습니다. "curl -X POST -d"username = admin & password = abc123 "http : // localhost : 8000/api-token-auth/"는 토큰을 생성하고 반환하고 클라이언트에서 서버로 앞뒤로 토큰을 보낼 수 있습니다 ... 나는 장고 rest 프레임 워크에서 호출해야합니다. 그것을하는 방법입니다, 10 배 – Erez