我正在尝试创建令牌后使令牌过期,最长持续时间为1分钟,以满足安全性要求。我的函数看起来像这样,但是我认为这样做的方式不正确,我想知道1分钟后使令牌失效的最佳方法是什么?我正在使用差异两次的技术。以下功能在models.py
def is_token_expired(self):
if self.token == None:
return False
now = datetime.datetime.utcnow().replace(tzinfo=utc)
timediff = now - self.created_at
if timediff.seconds / 60 - 1 > 0:
return True
return False
答案 0 :(得分:2)
我认为归档目标的一种优雅方法是利用django cache。
示例代码:
s = []
for i in lst:
if i[0] not in s:
s.append(i[0])
new_lst = []
for i in s:
m=[]
for x in lst:
if x[0] == i:
m.append(x[1])
tmp = (i,sum(m))
new_lst.append(tmp)
print(new_lst)
答案 1 :(得分:0)
最好在模型中使用@property
:
from datetime import timedelta
class Foo(models.Model):
some_field = models.CharField()
creation_date = models.DateTimeField(auto_now_add=True)
@property
def is_expired(self):
if datetime.now > (self.creation_date + timedelta(minutes=1)):
return True
return False
您可以更改timedelta(minutes=1)
来确定您的令牌有效。
并在您的代码中像这样使用它:
if your_instance.is_expired == True:
# do something
您也可以使用Django builtin cache system(Enix提到)作为更好的方法。