token.py 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. import jimit as ji
  4. from jimvc.models import Database as db
  5. __author__ = 'James Iter'
  6. __date__ = '2019-01-01'
  7. __contact__ = 'james.iter.cn@gmail.com'
  8. __copyright__ = '(c) 2019 by James Iter.'
  9. class Token(object):
  10. def __init__(self):
  11. self.token = None
  12. self.ttl = 86400
  13. def generator(self):
  14. self.token = ji.Common.generate_random_code(length=32)
  15. def create(self):
  16. key = 'Z:Token'
  17. score = ji.Common.ts() + self.ttl
  18. value = self.token
  19. # 可重入,不会产生副作用
  20. # http://redisdoc.com/sorted_set/zadd.html
  21. db.r.zadd(key, score, value)
  22. @staticmethod
  23. def get_all():
  24. return db.r.zrange('Z:Token', start=0, end=-1, withscores=True, desc=True, score_cast_func=int)
  25. def valid(self):
  26. score = db.r.zscore('Z:Token', self.token)
  27. if score is not None and score >= ji.Common.ts():
  28. return True
  29. return False
  30. def delete(self):
  31. return db.r.zrem('Z:Token', self.token)