【发布时间】:2020-04-11 19:18:02
【问题描述】:
我是 JWT 的新手,对反应并不陌生,但对如何从前端解码 JWT 感到非常困惑。我最初认为我可以将 JWT Secret 存储在 .env 文件中,但许多消息来源说这样做是一个非常糟糕的主意。我有后端设置,可以在您登录时向我发送 JWT。但是如果不将密钥也存储在前端,我将如何解码信息?
后端:
if(bcrypt.compareSync(ctx.params.password, hashed_db_password)) {
ctx.status = 200;
const payload = { data: tuples[0] };
const options = { expiresIn: '1h', issuer: 'testIssuer'};
const secret = process.env.JWT_SECRET;
const token = jwt.sign(payload, secret, options);
ctx.body = token;
return resolve();
}
我认为前端应该是这样的:
let data = JWT.verify(result.data, process.env.REACT_APP_JWT_SECRET, options);
我还阅读了很多关于后端应该进行验证的信息,但是这不会是一个巨大的安全风险来验证,然后发回不安全的原始用户信息吗?任何信息将不胜感激。
顺便说一句,我正在使用 Reactjs、Node.js、Express 和 MySql
【问题讨论】:
-
无需在前端验证令牌。而且你仍然可以解码令牌,payload只是一个base64url编码的json,你不需要秘密或密钥来解码。
-
谢谢 刚刚从电脑上休息一下才发现????
标签: node.js reactjs express jwt jwt-auth