我的用例如下:
const stringObject = {
elementA: stringA,
elementB: stringB
};
const bufferString = new Buffer(`${JSON.stringify(stringObject)}`);
const encodedAccessToken = bufferString.toString('base64');
生成的字符串现在可以在任何地方解码。有没有办法我可以编码它,只有我的服务器才能解码它?就像用某种键编码它一样。
谢谢。
您可以使用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
});
这并没有直接回答你的问题,但我认为你的整体方法是错误的。您要实现的目标是获取会话数据。您无需将此数据发送到客户端并返回。这不是一个很好的做法。相反,您应该将此数据存储在服务器上,最好存储在数据库中。
你要做的是创建一个独特的密钥,随机生成的东西。您将使用此密钥存储用户数据,并将密钥发送到客户端以用于请求。您可以通过将其设置为cookie变量来实现。
用户数据可以具有其他字段变量,以实现更安全的访问。就像客户端的IP一样,也可能是清理的到期时间。
请改用jsonwebtoken。它可以用一个秘密短语加密你的对象。像node-jsonwebtoken
这样的库很容易使用。