2016-11-08 44 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