我已经使用链接https://django-rest-framework-simplejwt.readthedocs.io/en/latest/index.html在我的项目中实现了JWT身份验证和授权
代码运行正常,但我需要将“username”和“password”更改为“移动的_number”和“otp”。
我有一个自定义用户模型,如
class User(AbstractUser):
password = models.CharField(max_length=128, blank=True, null=True)
email = models.EmailField(max_length=254, unique=True)
dial_code_id = models.CharField(max_length=100)
mobile_number = models.CharField(max_length=100, blank=True, null=True)
username = models.CharField(max_length=150, unique=True, blank=True, null=True)
is_resource = models.BooleanField(default=False)
is_customer = models.BooleanField(default=False)
is_active = models.BooleanField(default=True)
skills = models.ManyToManyField(Skills)
class Meta:
db_table = "my_user"
def __str__(self):
return self.mobile_number
出于登录的目的,我计划有一个OTP模型,如
class LoginOtp(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
otp = models.IntegerField()
created_on = models.DateTimeField(default=datetime.utcnow())
class Meta:
db_table = "otp"
1.我不知道以上方法是否正确,如果不正确,请指正。
1.如何将“用户名”和“密码”替换为“移动的号码”和“OTP”。
- 谢谢-谢谢
2条答案
按热度按时间8i9zcol21#
首先,创建一个视图来接受用户的
mobile_number
。验证它是否存在于您的User
模型中,如果存在,则使用消息API服务(如Twilio)发送OTP。如果mobile_number
不存在,则相应地通知用户。此外,您还需要另一个端点来验证用户是否已收到OTP。这也可以使用相同的消息传递API服务Twilio来完成。一旦Twilio验证了OTP,您就可以使用这个简单的JWT来生成
refresh
和access
令牌,如下所示-for_user()
方法将接受User
模型的示例。在您的情况下,是刚刚验证OTP的用户。如果OTP验证成功,您可以返回如下响应-
pieyvz9o2#