【问题标题】:use django_cron to achieve token expiration and log out使用django_cron实现token过期和注销
【发布时间】:2022-01-02 15:06:50
【问题描述】:

我写了一个django,使用django rest框架的TokenAuthentication验证。注销时,删除之前的令牌并重新创建令牌。现在想用django_cron来实现token过期和注销。在Django Cron中如何获取当前用户信息?

【问题讨论】:

  • 我建议使用simple-jwt。它默认提供过期功能,您可以在过期后将令牌添加到黑名单中。 settings are
  • 我知道 JWT 和其他使令牌过期的方法。如果我想用django rest框架的TokenAuthentication,用django_cron实现token过期重新登录,能教我吗?

标签: python django django-cron


【解决方案1】:

你可以关注这个 https://django-cron.readthedocs.io/en/latest/installation.html 和里面

from rest_framework.authtoken.models import Token 
from datetime import timedelta, datetime

class MyCronJob(CronJobBase):
    RUN_EVERY_MINS = 120 # every 2 hours
    Expiration = timedelta(days=1) # whate ever you want or get from settings.py
    now = datetime.now()

    schedule = Schedule(run_every_mins=RUN_EVERY_MINS)
    code = 'my_app.my_cron_job'    # a unique code

    def do(self):
      tokens = Token.objects.filter(created__lt=now-Expiration)
      # now to expires it you need to delete it 
      tokens.delete()

这只是想法如何与您合作

【讨论】:

  • 我看过这个文档,但是我不知道如何在这里获取当前登录用户的信息,你能联系我吗?
  • # 注销类 LogoutView(APIView): # permission_classes permission_classes = [IsAuthenticated] def delete(self, request, *args, **kwargs): Token.objects.filter(user=request.user) .delete() Token.objects.get_or_create(user=request.user)
  • 要清楚你想要什么,你想单独检查每个用户以便自动删除令牌???
  • 真的有很多想法可以随心所欲地实现
  • 例如,您可以从用户那里获取令牌,如果发现检查过期,请尝试从数据库中获取它
猜你喜欢
  • 2016-04-18
  • 2021-11-08
  • 1970-01-01
  • 2021-07-27
  • 2020-02-18
  • 2020-12-09
  • 1970-01-01
  • 1970-01-01
  • 2020-02-10
相关资源
最近更新 更多