- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前有一个 Django 应用程序,它只是一堆 REST API(当然由数据库支持)。我正在使用 Django REST framework JWT 管理我的身份验证。运行良好。每当用户登录时,我的 API 之一都会返回一个 token ,消费应用程序会存储该 token 以供以后使用。到目前为止一切顺利。
但是,在未来,该解决方案将需要扩展。我可以预见到需要多个 Web 服务器的情况,而不是让单个服务器运行 Django 应用程序。当然,所有这些网络服务器都将连接到同一个数据库。但由于 token 不存储在数据库中,这将如何与多个 Web 服务器一起工作?一台服务器颁发的 token 在另一台服务器上无效。
那么其他人是如何解决这个问题的呢?
最佳答案
详细说明:
首先我们了解一下Django-Rest-Framework(DRF)提供的默认token认证与DRF-JWT提供的token在实现上的区别
由 DRF 提供的 token
rest_framework.authentication.TokenAuthentication
token 创建:
1)创建 token
Token.objects.create(user=user)
2)将步骤1中创建的 token 存储在数据库中
3)将token返回给客户端
token 身份验证:
1)检查数据库中是否存在客户端传递的token
2)如果token存在,则表示用户已通过身份验证
DRF-JWT 提供的 token
rest_framework_jwt.authentication.JSONWebTokenAuthentication
token 创建:
1)创建 token
body = base64encode(header) + "."+ base64encode(有效负载)
signature = HMACSHA256_encode(body, 'secret_key') #secret key 通常在您的 settings.py 中指定
标记=正文+“。” +签名
2)将token返回给客户端
token 身份验证:
1)解码 token
token_segment = token.split('.')
body = token_segment[0] + "."+ token_segment[1]
签名 = token_segment[2]
decode_body = HMACSHA256_decode(signature, 'secret_key')
2)如果decode_body等于body,则用户通过身份验证
结论
从上面的机制,我们可以有把握地得出结论,JWT 方法更具可扩展性,因为它仅依赖于 Secret_key,并且每个网络服务器都应该在 settings.py 下拥有 Secret_key
因此,要回答您的问题,您无需担心缩放问题:)
关于django - 如何使 Django REST JWT 身份验证扩展到多个 Web 服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26126622/
如何将浮点 10 字节十六进制字符串(Delphi 中的扩展数据类型)转换为 C# 数据类型? 例如:00 00 00 00 00 00 00 80 ff 3f 在 Delphi 1 最佳答案 涉及同
我正在阅读 this page上面写着 If one of the strings has an encoding prefix and the other doesn't, the one that
我有以下代码(作为示例),我想对其进行调整,以使功能区扩展到整个 xrange,如 geom_hline()做。功能区指示哪些值在可接受的范围内。在我的实际应用程序中,有时没有上限或下限,因此 hli
去年,斯科特·格思里 stated “如果您想要对执行的 SQL 进行绝对控制,您实际上可以覆盖 LINQ to SQL 使用的原始 SQL”,但我找不到描述可扩展性方法的文档。 我想修改以下 LIN
我尝试在我的应用中创建一个抽屉导航。我有 3 个当前选项(查看、声明、报告),当然这 3 个 Activity 已扩展到 fragment。在View 中,它有一个next 按钮,该按钮将转到另一个页
很抱歉,如果我的问题被重复,但我无法(或不知道如何谷歌)找到答案。我想使用 rxlifecycle-navi 库来将 rxjava 绑定(bind)到生命周期,所以我需要扩展 NaviActivity
有这个html: aaa 做的时候: $('#hi1').sayHi(); 我想收到一条“嗨”提醒 有人知道这是怎么做到的吗? 最佳答案 了解更多关于jQuery plugin authoring
我有一个 UIImageView 和一个 UITextView。当点击 UITextView 时,我需要 UITextView 在 UIImageView 上展开。我不知道该怎么做。 从这里 为此 最
以下语句: URLClassLoader ucl = (URLClassLoader) ClassLoader.getSystemClassLoader(); Class uclc = ucl.get
以下语句: URLClassLoader ucl = (URLClassLoader) ClassLoader.getSystemClassLoader(); Class uclc = ucl.get
$的意思是什么!在 shell 或 shell 脚本中?我正在尝试理解具有以下内容的脚本。 local@usr> a=1 local@usr> echo $a 1 local@usr> echo $!
我正在 GWT 中设计一个简单的应用程序,并且在客户端有不同的 View 。每个 View 都从 SimplePanel 扩展而来,并将根据需要添加到 RootPanel。 我的第一个 View 是
我尝试在 SQL Azure 选项卡中从 S2 扩展到 S3,但 S3 似乎不可用,尽管它已被引入。另外,我还有大量可用的 DTU,即 1900 左右。是否无法扩展到 S3?我是否需要导出数据库,然后
我有一个带有 JS、html 和 css 的自定义视频播放器。我的问题的关键是我没有预料到将其从一个视频扩展到两个视频,我希望重构它,以便我可以在一个页面上播放多个视频。我尝试将所有内容重写为 for
我当前正在开发的应用程序需要可扩展的实时通信。我们一直在研究并尝试 Firebase 实时数据库和 firestore。看来Firebase实时数据库更加成熟并且经过测试,而firestore仍处于测
当 pod 被 daemonset 控制时,pod 会出现一些错误,状态会是 CrashLoopBackOff ,我想删除这些 Pod 但不想删除 DaemonSet。 所以我想把daemonset缩
我有 Jframe 表单并创建了从中绘制图形的类,为此我需要将该 void 类扩展为 jframe 表单 package grafiktest; import java.awt.Color; impo
在布局和尺寸策略方面,我从来都不是太出色,所以这可能是一个简单的答案,但就是这样。 当我向 QTabWIdget 添加新选项卡并将小部件设置为 QSplitter 时,拆分器将使用给定的全部空间量。但
我在将我的 S4 对象转换回列表时遇到了一些问题。例如,以下嵌套的 S4 类: setClass("nssItem", representation(value = "numeric
在阅读了 DDD 的一些页面后,我了解了存储库模式,然后在应用程序中成功使用了它(我真的很喜欢它);然后我注意到 EntityManager 是 generic-repository-like,但是当
我是一名优秀的程序员,十分优秀!