1分钟后如何使令牌过期?

时间:2019-12-01 05:33:01

标签: python django

我正在尝试创建令牌后使令牌过期,最长持续时间为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

2 个答案:

答案 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提到)作为更好的方法。