2016-11-08 81 views
2

我是Django的新手,这是我第一次使用短信验证来实现signUp表单。在哪里保存发送给用户注册的验证码

我得到用户手机号码并生成一个随机数并发送给他;我希望生成的代码在30分钟后过期,之后我不需要它们,所以它似乎不是一个好主意,它们保存在数据库中,并在过期后删除它们。

我想知道是否有人可以帮助我解决这个问题:“实现这个的最好方法是什么?”

非常感谢你提前

+0

更多的文档,您可能需要使用[Django的OTP(https://pypi.python.org/pypi/django-otp) – v1k45

回答

3

将它们保存在Redis中。 Redis密钥可以具有TTL(生存时间),TTL密钥在时间段后自动删除。

import redis 
r = redis.StrictRedis() 

# create pin 
r.set("<phone-number>", <sms-pin>) 
r.expire("<phone-number>", 1800) # 1800 seconds = 1/2 hour 

# get pin 
if r.exists("<phone-number>"): 
    pin=r.get("<phone-number>") 
    ... validate pin 
else: 
    ... invalid pin 

http://agiliq.com/blog/2015/03/getting-started-with-redis-py/

+0

谢谢你这么多;但我有一个问题:我的数据库是Django(pycharm)是sqlite3;是否有可能同时拥有Redis或者我必须选择其中之一? (我现在应该将所有现在在sqlite3中的表迁移到Redis吗?)@Bitonator – Far

+0

它可能同时具有redis。将引脚保持在redis中,并保持数据库为sqllite3,不需要迁移。 – Bitonator