注销 Django Rest Framework JWT

2024-03-04

我想问一下,当我使用 JWT 时注销是否是一个好主意。 要登录,我发送一个带有用户名和密码的发布请求,以获取所需的令牌(保存到 localStorage 中),当然,这将允许我向需要令牌的视图发送进一步的请求。

但我不确定应该如何注销用户。我可以清除 localStorage,但令牌仍然可用。

所以,我想问我是否应该使用刷新令牌,因为我无法禁用它。


你是对的,即使在删除 JWT 令牌之后,它仍然会在一段时间内保持有效令牌,直到过期。 JWT 是无状态的。因此,如果您想处理注销并使令牌无效,您必须需要保留数据库或内存缓存来存储无效(列入黑名单)令牌。然后你需要添加一个新的权限来检查令牌是否被列入黑名单。

class BlackListedToken(models.Model):
    token = models.CharField(max_length=500)
    user = models.ForeignKey(User, related_name="token_user", on_delete=models.CASCADE)
    timestamp = models.DateTimeField(auto_now=True)

    class Meta:
        unique_together = ("token", "user")


class IsTokenValid(BasePermission):
    def has_permission(self, request, view):
        user_id = request.user.id            
        is_allowed_user = True
        token = request.auth.decode("utf-8")
        try:
            is_blackListed = BlackListedToken.objects.get(user=user_id, token=token)
            if is_blackListed:
                is_allowed_user = False
        except BlackListedToken.DoesNotExist:
            is_allowed_user = True
        return is_allowed_user

令牌过期后,您可以将其从黑名单中删除。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

注销 Django Rest Framework JWT 的相关文章

  • 使用单选按钮渲染 ChoiceField

    我从模型构建了这个表格 class Configure template forms Form subject type forms ChoiceField choices Subject type objects all 我想使用单选按钮
  • Python 和 Django IDE 具有远程编辑功能吗?

    我正在寻找一个 IDE 它允许我编辑远程 Python 项目 并且还具有良好的 Django 支持 远程命令执行以及远程调试 我已经尝试使用 PyCharm 和 Aptana 与 PyDev 但我在配置它们进行远程编辑时运气不佳 感谢您的帮
  • 确定网站的唯一访问者

    我正在创建一个 django 网站 使用 Apache2 作为服务器 我需要一种方法来以完整的证据方式确定我的网站 特别是每个页面 的唯一访问者数量 不幸的是 用户会有很大的动机去尝试 玩弄 跟踪系统 所以我正在努力证明这一点 有什么办法可
  • 在一个视图中使用两个模板

    我尝试以两种方式呈现视图中的内容 html 和 csv 下载 我能够做到这一点的唯一方法是使用两种不同的视图 一种用于 html 演示 一种用于 csv 这重复了我的代码 我正在寻找更优雅的解决方案 有什么建议么 这是示例代码 views
  • Django admin:通过 URL 传递变量

    我想通过 URL 将变量传递到 django admin 中的另一个页面 看起来它不起作用 我想传递变量 name hello 并通过request GET get name 捕获它 但是url变成 e 1 经过之后 如果我使用默认参数 q
  • django 根据 UserProfile.language() 字段数据发送本地化电子邮件

    在我的优惠网站中 如果优惠满足某些要求 模型中指定的过滤器 用户可以设置电子邮件警报 因此 当用户 A 添加报价时 post save 信号将发送到 celery 并检查是否应用了用户警报过滤器 如果有 则发送电子邮件 问题是我不知道如何安
  • 在 Django 中使用 prefetch_lated 连接 ManyToMany 字段

    我可能遗漏了一些明显的东西 但我在连接 ManyToMany 字段以在 Django 应用程序中工作时遇到问题 我有两个模型 class Area models Model name CharField class Role models
  • 具有内联模型的 Django 管理页面加载速度非常慢

    我有一个带有单个内联模型的模型的 Django 管理页面 当内联模型有很多项目 例如 75 个 时 页面加载速度非常慢 大约 30 秒 即使我排除内联模型上的所有字段 让它只渲染名称 情况也是如此 删除内联模型会导致页面加载速度非常快 以秒
  • Django 1.6 的静态文件

    我花了一整天但没有任何作用 我在这里看到了至少 20 篇关于同一主题的帖子 它们各不相同 有不同的建议 但没有一个对我有用 使用 Python 2 7 运行 Django 1 6 我正在尝试从 django 教程加载民意调查应用程序的 cs
  • 每个其他请求 JWT 验证都会失败,并显示“idx10503 签名验证失败”。令牌没有孩子'

    所以整个 JWT 签名和验证对我来说还是很新鲜的 我现在有一个 C 应用程序 它通过使用 JWT 保护的 API 请求一些信息 奇怪的是 所有其他请求都失败了 所以第一个请求就像一个魅力 我收到了我期望的信息和回复 JWT 验证成功 我在它
  • 如何限制Django CreateView中ForeignKey字段的选择?

    我有一个沿着这些思路的模型结构 models py class Foo models Model class Bar models Model foo models ForeignKey Foo class Baz models Model
  • 如果字段值在外部列表中,Django 会注释布尔值

    想象一下我有这个 Django 模型 class Letter models Model name models CharField max length 1 unique True 还有这个列表 vowels a e i o u 我想查询
  • matplotlib matshow 标签

    我一个月前开始使用 matplotlib 所以我仍在学习 我正在尝试用 matshow 制作热图 我的代码如下 data numpy array a reshape 4 4 cax ax matshow data interpolation
  • 来自 django 教程 was_published_recently.admin_order_field = 'pub_date'

    From Django 教程 https www jetbrains com help pycharm 2017 1 creating and running your first django project html d28041e21
  • iFrame 在 Facebook Canvas 应用程序中显示为空白

    我有一个非常简单的页面 我试图在 Facebook iframe 中查看它 它是一个 Django 视图 但它不依赖于请求是通过 POST 还是 GET 提交 它所做的只是返回一些简单的 HTML 如果我们直接点击链接 它会正确显示 如果在
  • 在 Django 中定义视图和 url。为什么调用函数时不使用括号?

    我已经在经历 Python速成课程 目前正在进行 Django Web应用程序项目 学习日志 阶段 有些东西与我已经学到的相矛盾 views py file from django shortcuts import render def i
  • 使用 python 制作本地服务器应用程序的最佳方法

    我想要简单轻松地集成 python 和 vba 人们 如果他们在阅读本文后亲自见到我 阅读本文可能会杀了我 但我正在使用 django 开发服务器来实现此目的 有没有什么简单又好的方法 仅举个例子 我想使用 python 模块 openpy
  • Django modelForm 中的文件上传

    我正在尝试在 appengine django 中上传文档 使用纯 django 代码成功上传文档 使用 python manage py runsever 但是当我尝试使用 appengine 项目运行 django 时 它给了我错误 E
  • Django 本身支持迁移吗

    我听说所有新的 Web 框架 如 ROR Django 等 都遵循敏捷和 TDD 的一般原则 遵循敏捷和 TDD 的一部分是在从一个迭代到另一个迭代时制定自己的设计 这意味着模型及其架构将随着应用程序的不同版本而演变 我知道 ROR 本身支
  • 解析 JWT 令牌以仅获取有效负载内容,无需 C# 或 Blazor 中的外部库

    我正在使用 Blazor 编写可以访问 JWT 的客户端应用程序 我想知道一种简单的方法来读取令牌有效负载内容而不添加额外的依赖项 因为我不需要其他信息 也不需要验证令牌 我认为解析有效负载内容应该足够简单 只需将其写入方法即可 JwtTo

随机推荐

  • 当用户结束讲话时停止语音识别

    Siri 如何确定我何时说完 我想知道的原因是我想在我的应用程序中使用 Apple 的语音识别 API 实现类似的功能 这是可行的 还是知道用户何时停止说话的唯一方法是通过用户输入 你可以使用计时器 我有同样的问题 但我无法用优雅的方法解决
  • 如何使用 Jest 测试 React Native 中的警报

    因此 在我的程序中 当用户登录时 如果所有凭据均正确 如果缺少任何详细信息或格式不正确 他们将进入下一页 并且屏幕上会显示警报 如果按下按钮后已显示警报 如何在 React Native 中使用 Jest 进行测试 并确认警报文本是否正确
  • 如何解决 Android 中的错误“BasicClientConnManager 无效使用:确保在分配另一个连接之前释放连接”?

    在这里 我尝试将一些数据从移动设备发布到服务器 为此 我首先必须登录服务器进行身份验证 然后在我通过 POST 请求发送数据之后 我已经检查了这个相关的 stackoverflow 问题 HttpClient 4 0 1 如何释放连接 ht
  • 如何使用 common lisp 确定操作系统和主机名?

    为了让我的 sbclrc 文件在我使用的两台计算机上工作 我想要一种从 sbcl 中获取主机名和 或操作系统的方法 我知道我可以设置然后查找环境变量 但是有更直接的方法吗 Update 我将问题更改为引用 common lisp 因为 Ke
  • Excel VBA CDO 邮件

    我尝试使用 Microsoft Office Excel 2007 VBA 代码发送邮件 但收到错误 运行时错误 2147220973 80040213 自动化错误 我正在使用的代码是 Dim cdomsg As Object Set cd
  • MongoDB 地理空间查询计数问题(始终为 100)

    包含超过 100 个结果的地理空间查询的计数操作似乎存在问题 如果我运行以下查询 无论如何我仍然得到 100 的计数 db locations find loc nearSphere 50 50 limit 1000 count 据我所知
  • Weblogic - java.lang.ClassNotFoundException:org.bouncycastle.jce.provider.JCEMac$DES9797Alg3

    我正在使用 Java Web 应用程序 需要使用 3DES 算法生成 MAC 代码在 Weblogic 10 3 上运行没有问题 但当我尝试在不同的 Weblogic 类似版本 10 3 1 中运行该应用程序时 问题出现了 这是我的代码 p
  • HTML CSS - 在 Windows Phone 上显示时字体尺寸过大

    我实际上正在创建一份时事通讯 当我在outlook outlook web access中打开电子邮件时 布局与我构建的一模一样 然而 当我在 Windows Phone 8 中打开同一封电子邮件时 字体大小不受尊重 并且电子邮件不再具有相
  • 您是否使用 MDA/MDD/MDSD 等任何类型的模型驱动方法?未来会是这样吗?

    编程语言在其历史上经历了几个 或 进化步骤 有些人认为模型驱动的方法将是下一件大事 openArchitectureWare AndroMDA Sculptor Fornax Platform 等工具可以带来令人难以置信的生产力提升 然而
  • 如何根据数组值计算空闲可用时间

    假设我有一个如下所示的数组 meeting one start time 07 15 00 end time 08 15 00 meeting two start time 15 45 00 end time 18 15 00 现在我想计算
  • Python Beautiful Soup“NoneType”对象错误

    我正在使用 Beautiful Soup 来获取网页正文中的超链接 这是我使用的代码 import urllib2 from bs4 import BeautifulSoup url http www 1914 1918 net swb h
  • SQLAlchemy 返回所有不同的列值

    我正在使用 Flask 和 SQLAlchemy 创建一个网站 该网站跟踪学生所修的课程 我想找到一种使用 SQLAlchemy 搜索数据库的方法 以查找已输入的所有唯一类 这是我的代码models py上课 class Class db
  • 覆盖 scene2D 舞台的绘制顺序

    给你一个复杂的Scene2D图中libgdx与几个Group s and Actor s 您希望用户选择一些Actors并在最后绘制它们 以便它们看起来集中在任何其他之上Actors 我想迭代一下Stage两次 第一次绘制未选择的Actor
  • 使用 ngx-leaflet、HTTPClient 和 Angular2+ 将 GeoJSON 数据获取到 Leaflet 地图

    我正在使用 ngx leaflet 演示来尝试从 get 请求中获取 GeoJson 以显示在 LeafLet 地图上 我已经使用构建了一个有效的 GeoJsonhttp geojson io http geojson io 并使用双重检查
  • 如何保留重复项但根据 R 中的列删除唯一值

    如何保留重复项 但根据一列 qol 删除唯一值 ID qol Sat A 7 6 A 7 5 B 3 3 B 3 4 B 1 7 C 2 7 c 1 2 但我需要这个 ID qol Sat A 7 6 A 7 5 B 3 3 B 3 4 我
  • 可在浏览器中并与 Node.js 一起使用的多文件 JavaScript 库的设计模式

    我已经编写了一个主要在浏览器中使用的库 现在我也想将这个库与 node js 一起使用 我的库由多个文件组成 例如 loremIpsum core js loremIpsum loremIpsum a function Important
  • Android RTP/RTCP 堆栈

    我正在寻找一个堆栈 库 它可以让我充分利用 Android 下 RTP 和 RTCP 协议的所有标头字段 我不知道这是否重要 但我想将它与我用于 SIP 和 SDP 的 JAIN SIP 堆栈结合起来 有没有人有任何经验或建议 The an
  • 如何从重叠的日期中获取单独的间隔

    我有一个包含开始日期和结束日期的表格 如下所示 drop table if exists Temp select into Temp from values 1 1 2011 10 09 2011 10 20 2 1 2011 10 14
  • .NET RegionInfo 类

    当我尝试使用某些 ISO 3166 国家 地区代码 孟加拉国的 BD 索马里的 SO 斯里兰卡的 LK 创建新的 RegionInfo 时 我收到一个 ArgumentException 表示它无法识别 这是怎么回事 RegionInfo
  • 注销 Django Rest Framework JWT

    我想问一下 当我使用 JWT 时注销是否是一个好主意 要登录 我发送一个带有用户名和密码的发布请求 以获取所需的令牌 保存到 localStorage 中 当然 这将允许我向需要令牌的视图发送进一步的请求 但我不确定应该如何注销用户 我可以