我不是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
答案 0 :(得分:1)
您可以将其存储在主要组件状态,Redux存储,React Context,本地存储等中。
仅当身份验证成功时才应获得JWT,并且应将其与每个请求一起发送给服务器,您无需在前端对其进行解码,只需将编码值传递给服务器并进行解码即可它放在后端的某处(某种中间件)
答案 1 :(得分:1)