在登录名中,我想发送OTP,第二名要验证OTP,然后返回令牌。
我正在使用rest_framework_simplejwt
JWTAuthentication。第一名是验证用户并发送OTP,而不返回令牌;第二名是验证OTP,并返回令牌。
让我知道这是否是正确的使用方式?如果没有,我该如何使用JWTAuthentication来实现这一点。
或者如果使用的方法不正确,是否可以像第一位使用基本身份验证来验证用户,第二位 jwt身份验证来验证OTP和发送令牌。让我知道您的解决方案。
答案 0 :(得分:0)
我了解什么?
您需要先向正在使用send_otp路由的当前用户发送OTP,然后再检查该用户是否在系统中,然后再进行verify_otp路由,这将验证用户已在API中发送的OTP及其对应的mobile_number / email_id。
如何做到?
send_otp -保持此路由开放,您不需要为此进行身份验证,甚至不需要基本身份验证(在行业中也是如此),只需从用户处获取mobile_number在请求中,检查数据库中是否存在该OTP,然后将OTP发送给该号码,然后将OTP设置为您的缓存中的相应用户,以进行重新检查(redis / memcache)。在此路由上使用限制,以便没有人能够利用您的此API。
verify_otp -此路由也将打开(无authentication_class / permission_classes),从用户那里获取mobile_number / email id + OTP,在缓存中进行验证,如果通过验证,则生成使用 TokenObtainPairSerializer 令牌并在响应中发送刷新+访问令牌,如果OTP错误,则发送401。