我目前正在开发一个应用程序,需要使用简单的otp身份验证 django
在 models.py
应用程序的 accounts
我创建了一个类来存储otp,而不将其作为模型,如下所示,
class temp:
def __init__(self,otp):
self.otp = otp
print(self.otp)
在 views.py
代码是这样的,
g = globals()
... some code
g["user"+ str(request.POST['username'])] = models.temp(the_otp)
这在任何情况下都很管用 localhost
,如果我将此部署到 heroku
. 如果没有建议一些其他的方式来存储的otp暂时不做模型。提前谢谢。
1条答案
按热度按时间ckocjqey1#
不,这样不行。您可能会看到它在本地开发服务器上运行良好,但由于它使用全局变量,因此此方法面临几个问题:
假设出于某种原因需要重新启动服务器。现在发生了什么?好吧,你的全局变量现在丢失了,你的用户可能会面临不便,因为他们现在需要重新生成他们的otp,并感到奇怪,为什么他们的otp由于某种原因无效。。。
我们运行多个进程来有效地服务于用户的请求,用户的请求可能会被给予任何正在运行的进程。这里发生了什么?好吧,我们的otp是在一个进程上生成的,用户现在正试图将它提交给另一个进程,但又面临着不便。
可能会出现更多类似的问题。
一般来说,全局变量在web服务器中更糟糕。