我熟悉Web存储API和cookies,但是我不知道存储身份验证令牌最安全的方式是什么。我想知道这是否会破坏任何第三方库。
我想要一份详尽的可用方法列表,列出每种方法的优缺点,最重要的是最好的方法(如果有的话)。
看看这个动机
最安全的选择是在内存中。看看这个进行深度潜水
使用基于令牌的身份验证,您可以选择存储JWT的位置。我们强烈建议您将令牌存储在本地存储/会话存储或cookie中。
通常,JWT被放在浏览器的本地存储中,这对于大多数用例来说工作得很好。
使用用户名和密码登录用户时,响应正文包含access_tokenJWT
。然后您需要在客户端代码中处理此响应。然后可以将此令牌存储在local存储或会话存储中。
单击此处查看使用会话存储的示例
本地
存储和会话
存储都扩展了存储
。它们之间的唯一区别是数据的持久性:
local存储
-数据会持续存在,直到显式删除。所做的更改会被保存并可用于当前和未来对站点的所有访问。
< code>sessionStorage -保存所做的更改,并可用于当前页面,以及同一窗口中对该站点的未来访问。一旦窗口关闭,存储就会被删除。
您还可以使用cookie来存储JWT。设置cookie的确切方式取决于您使用的客户端语言。
有不同的选项来控制cookie的生命周期:
Referer
和< code>Origin头,也可以部分阻止CSRF。 < li >如果应用程序需要跨域访问,可能很难实现。cookie具有附加属性(域/路径),可以修改这些属性以允许您指定允许将cookie发送到的位置。
原文:https://auth 0 . com/docs/security/store-tokens #如何实现
我正在使用vue.js和vuex开发一个应用程序,它使用JWT令牌对JSON API服务器进行身份验证。所以我想知道存放JWT代币的最佳做法是什么? 如果我将其存储在vuex商店中,则页面刷新后它会丢失,因此用户需要再次登录,这不是很方便。 如果我将其存储在浏览器的本地存储中,它会在下次登录之前被弃用,然后假设身份验证令牌的组件会混淆。我不知道如何处理这个问题。 感谢你对此的暗示。
这里存储JWT令牌: 谢谢你。
我正在实现一个需要身份验证的REST服务。我正在使用JWT。 现在,Android应用程序在登录时发送一个请求,获得一个令牌,并且必须在每个后续请求的头中发送令牌。 我的问题是,如何存储令牌,或者我应该将其存储在哪里? 共享偏好 SQLite数据库 归档 最好的做法是什么?还是我完全错了?
问题内容: 我正在使用ExpressJS,Mongodb(Mogoose)构建应用程序。应用程序包含访问用户之前必须对其进行身份验证的路由。 目前,我已经编写了一个快速的中间件来做同样的事情。在这里,借助JWT令牌,我正在进行mongodb查询以检查用户是否已通过身份验证。但是感觉这可能会在我的数据库上增加不必要的请求负载。 我应该针对此特定任务集成redis吗? 会改善API性能吗?还是应该继续
问题内容: 实用程序函数在Django中应该存放在哪里?诸如自定义加密/解密数字,发送推文,发送电子邮件,验证对象所有权,自定义输入验证等功能。我在应用程序中的多个位置使用了重复性和自定义内容。我现在肯定要打破DRY。 我看到了一些演示,其中在models.py中定义了函数,尽管从概念上看这对我来说并不正确。他们是否应该使用导入到我的项目中的“实用程序”应用程序?如果是这样,它们在实用程序应用程序
我觉得Angular对模型的使用让人困惑。Angular似乎采取的方法是,模型可以是任何你喜欢的--即。Angular不包含显式的模型类,您可以使用常规JavaScript对象作为模型。 “编辑”这个问题的第二个答案很有趣,也很接近我目前使用的。