我是Django Rest和基于JWT令牌的身份验证的新手。
我正在使用名为djangorestframework_simplejwt
的软件包
我已经创建了前端UI并成功验证了用户身份。
我遇到一个问题,当我创建一个新用户时,我将用户发送回响应数据中,然后以一个承诺击中身份验证端点以检索我的令牌。
这感觉不对,感觉就像后端可以完全解决。
在前端-
return APIUtil.signup(user).then((user) => {
return APIUtil.authenticate(user.data)
}).then((user) => dispatch(authenticateUser(user)))
export const authenticate = (user) => {
return axios({
method: 'post',
url: 'http://localhost:8000/api/token/',
data: {
username: user.username,
password: user.password
}
});
}
export const signup = (user) => {
return axios({
method: 'post',
url: 'http://localhost:8000/signup/',
data: {
username: user.username,
password: user.password,
email: user.email
}
});
}
在我的后端,我有一个用户视图集和序列化程序,并且使用django rest框架简单的JWT包,我有一个端点api / token /,它接收用户并返回其auth令牌。
我想创建用户,并在创建后在后端点击该端点,但是我不确定这样做的最佳方法。我尝试从用户视图集中的auth视图集继承,但是无法成功向其传递发布请求。
这是我的用户视图集
class UserViewSet(ModelViewSet):
model = User
queryset = model.objects.all()
serializer_class = serializers.UserSerializer
permission_classes = ([])
authentication_classes = ([])
def create(self, request, format=None):
user = serializers.UserSerializer(data=request.data,context={'request': request})
if user.is_valid():
new_user = user.save()
new_user.password = request.data['password']
return Response({'username': new_user.username, 'password': new_user.password}, status=status.HTTP_201_CREATED)
else:
return Response(user.errors, status=status.HTTP_400_BAD_REQUEST)
在此先感谢您的帮助/指导。
答案 0 :(得分:0)
首先,请不要在响应中返回密码。
您不需要点击终点。
我猜您想从注册端点返回auth令牌。
只需创建一个单独的代码段,即可在/ api / token中使用该代码来获取令牌。
您可以在注册创建过程中调用该函数以获得相同的令牌,然后在响应中将其返回。