Nodejs - 使用“私钥”编码为base64,并且只能在服务器中解码

问题描述 投票:0回答:3

我的用例如下:

  1. 传入服务器的http请求以进行登录
  2. 生成用户令牌。令牌是来自各个字段的Json对象构建。然后转换为String和Base64。 const stringObject = { elementA: stringA, elementB: stringB }; const bufferString = new Buffer(`${JSON.stringify(stringObject)}`); const encodedAccessToken = bufferString.toString('base64');

生成的字符串现在可以在任何地方解码。有没有办法我可以编码它,只有我的服务器才能解码它?就像用某种键编码它一样。

谢谢。

javascript node.js base64 cryptojs
3个回答
1
投票

您可以使用JWT令牌节点模块:link

编码数据并生成令牌:

var jwt = require('jsonwebtoken');
var token = jwt.sign({ foo: 'bar' }, 'shhhhh');

{foo:'bar'}是您加密的字段

用相同的密钥shhhhh解码

// verify a token symmetric
jwt.verify(token, 'shhhhh', function(err, decoded) {
  console.log(decoded.foo) // bar
});

0
投票

这并没有直接回答你的问题,但我认为你的整体方法是错误的。您要实现的目标是获取会话数据。您无需将此数据发送到客户端并返回。这不是一个很好的做法。相反,您应该将此数据存储在服务器上,最好存储在数据库中。

你要做的是创建一个独特的密钥,随机生成的东西。您将使用此密钥存储用户数据,并将密钥发送到客户端以用于请求。您可以通过将其设置为cookie变量来实现。

用户数据可以具有其他字段变量,以实现更安全的访问。就像客户端的IP一样,也可能是清理的到期时间。


0
投票

请改用jsonwebtoken。它可以用一个秘密短语加密你的对象。像node-jsonwebtoken这样的库很容易使用。

© www.soinside.com 2019 - 2024. All rights reserved.