如何存储 JWT 并使用 React 将它们与每个请求一起发送

2024-03-04

很高兴知道,因为我的基本注册/身份验证系统正在运行。

所以基本上我得到了这个:

app.post('/login', function(req,res) {
 Users.findOne({
email: req.body.email
}, function(err, user) {
if(err) throw err;

if(!user) {
  res.send({success: false, message: 'Authentication Failed, User not found.'});
} else {
  //Check passwords
  checkingPassword(req.body.password, user.password, function(err, isMatch) {
    if(isMatch && !err) {
      //Create token
      var token = jwt.sign(user,db.secret, {
        expiresIn: 1008000
      });
      res.json({success: true, jwtToken: "JWT "+token});
    } else {
      res.json({success: false, message: 'Authentication failed, wrong password buddy'});

       }
     });
    }
 });
});

然后,每当我发送带有 jwt 标头的 get 请求时,我都会使用 POSTMAN 保护我的 /admin 路由,一切都运行良好。

现在这是棘手的部分,基本上当我要登录时,如果成功,则将我重定向到管理页面,每次我尝试访问 admin/* 路由时,我想将我的 jwToken 发送到服务器,但问题是,我该如何实现这一目标?我没有使用 redux/flux,只是使用 React/react-router。

我不知道机械师是如何工作的。

多谢你们


不要将令牌存储在 localStorage 中,令牌可能会被 xss 攻击破坏。 我认为最好的解决方案是在登录操作时向客户端提供访问令牌和刷新令牌。 将访问令牌保存在内存中(例如 redux 状态),并且应该使用 httpOnly 标志(如果可能的话,还可以使用 secure 标志)在服务器上创建刷新令牌。 访问令牌应设置为每 2-3 分钟过期一次。 为了确保用户不必每 2-3 分钟输入一次凭据,我有一个间隔,调用/refreshToken当前令牌过期之前的端点(静默刷新令牌)。

这样,访问令牌就不会被 xss/csrf 破坏。 但使用 xss 攻击,攻击者可以代表您拨打电话/refreshToken端点,但这不会有害,因为返回的令牌不会被破坏。

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

如何存储 JWT 并使用 React 将它们与每个请求一起发送 的相关文章

随机推荐

  • 如何确定安装的 Eclipse 是 32 位版本还是 64 位版本?

    如何确定我的 Windows 7 PC 上的特定 Eclipse 实例是 32 位还是 64 位版本 我检查了 关于 屏幕以及可以从那里调用的迷宫般的对话框 但我没有找到任何线索 另外 在Windows资源管理器中右键单击eclipse e
  • 它只是不可能添加操作扩展图标

    我实际上已经尝试了两周来获得一个用于显示操作扩展的图标 但绝对没有任何效果 我过去见过这样的问题iOS 8 操作扩展图标大小 https stackoverflow com questions 25917700 ios 8 action e
  • 无法安装 ruby​​ gems - zlib 错误

    我正在尝试安装一些 Ruby Gems 以便在收到 Twitter 消息时可以使用 Ruby 来通知我 然而 在做了一个gem update system 现在每次我尝试执行以下操作时都会出现 zlib 错误gem install任何东西
  • 为什么我下载文件时我的移动运营商会重新编码?

    我在 Android 中发现了一个非常奇怪的现象 我发现 当下载超过 3g 的图像时 随后计算的 sha1 与服务器上的文件应有的不同 经过进一步调查 我发现图像实际上被缩小了尺寸并重新编码 我的移动运营商 verizon 似乎正在尝试优化
  • String.format 使用 exception.getMessage() 作为格式

    我有一个与 JAVA 中的 String format 有关的问题 我的 HibernateDao 类负责持久化实体 并在发生任何约束违规时抛出异常 该消息包含 s 并将用作上层的格式 因为我应该担心这一层中的类型 因此无法识别我无法持久化
  • 无法使用 Windows 使用 ssh 密钥访问 gitlab 存储库

    我已关注这些说明 https docs gitlab com ee ssh generate an ssh key pair用于使用 ssh keygen 生成密钥对 当我试图找出问题所在时 我实际上生成了 ed25519 和 rsa 密钥
  • CSS 对角线 - 如何适应其父元素?

    我怎样才能使对角线填充并适合一个盒子 只是纯CSS 不使用任何背景图像 div diagonal container border 1px solid 000 width 400px height 400px margin 0 auto t
  • Vim 删除空行

    我可以运行什么命令来删除 Vim 中的空行 g d g将在与正则表达式匹配的行上执行命令 正则表达式是 空行 命令是 d 删除
  • 如何将回归线添加到具有按因子进行颜色编码的多个数据系列的图中?

    我希望将回归线添加到具有多个按因子进行颜色编码的数据系列的图中 使用brewer pal 调色板 我创建了一个图 其中数据点按因子 plant ID 着色 下面是代码示例 palette brewer pal 12 Paired plot
  • 导入错误:没有名为 Crypto 的模块

    我刚刚开始探索Python 我正在尝试运行 AES 算法代码 但我面临着 导入错误 没有名为 Crypto 的模块 你如何解决这个问题 您必须安装加密包 https pypi python org pypi pycrypto https p
  • 本地化静态网站的正确方法是什么

    我需要将我们的网站本地化为多种语言 该网站由多个静态页面组成 没有动态后端 我们有一个良好的国际社会 人们愿意帮助我们 问题是如何安排网站翻译 正确的工作流程是什么 静态网站本地化的最佳实践是什么 如何组织语言字符串包 如何组织从字符串捆绑
  • onreadystatechange 中 XHR 获取请求 URL

    有没有办法在 onreadystatechange 方法中获取请求的URL 我想运行多个 XHR 请求并知道其中哪个会返回 xhr open GET https url i true xhr onreadystatechange funct
  • django 剥离/删除/清除值

    我正在使用 django 1 6 7 和 python 2 7 我试图在将值提交到数据库之前清除字段中的数据 如果它符合条件 我一直在使用 strip 但这不再有效 搜索 django 文档后我找不到解决方案 这是我的 forms py 文
  • WPF 中的数字数据输入

    您如何处理 WPF 应用程序中的数值输入 如果没有 NumericUpDown 控件 我一直在使用 TextBox 并使用下面的代码处理其 PreviewKeyDown 事件 但它非常丑陋 有没有人找到一种更优雅的方式来从用户获取数字数据而
  • 如何在 NetBeans 平台中隐藏没有图层文件的菜单?

    我很难在 NetBeans 平台中自定义菜单 我看到的示例要求您拥有一个 Layer 文件 但我认为我的 NetBeans 平台项目中没有该文件 要通过图层隐藏菜单 您应该这样做
  • 使用 PHP eval 的风险[重复]

    这个问题在这里已经有答案了 可能的重复 什么时候 如果有的话 eval 不是邪恶的 https stackoverflow com questions 3499672 when if ever is eval not evil php 中的
  • 两个互相引用的类

    我是 C 新手 所以这个问题可能很基本 我有两个类需要互相引用 每个都在自己的头文件中 include 是另一个的头文件 当我尝试编译时 我收到其中一个类的错误 ISO C 禁止声明没有类型的 Foo 如果我切换事物 以便首先解析相反的标头
  • BottomNavigationView.setupWithNavController 不起作用

    目前我正在开发一个Android应用程序 我想在其中同时利用Android Navigation Component and BottomNavigationView 在开发上述应用程序时 我签出了官方代码实验室这里有几个问题 但事实证明它
  • Firebase Web:下载 URL 中的存储位置

    我正在编写一个需要存储位置的 firebase 函数 现在我有下载网址 有没有办法像这样获取存储位置 gs dexxxxxxxxxxxxxxxx com videosvideo 67423 http gs dekhoapp appspot
  • 如何存储 JWT 并使用 React 将它们与每个请求一起发送

    很高兴知道 因为我的基本注册 身份验证系统正在运行 所以基本上我得到了这个 app post login function req res Users findOne email req body email function err us