Im正在尝试解码im登录时收到的jwt令牌,但它在console.log中返回''null'‘。
这是im解码的代码:
import jwt from 'jsonwebtoken';
function loginRequest(){
const token = axios.post('https://afe2021fitness.azurewebsites.net/api/Users/login',
state).then(data => {localStorage.setItem('jwtToken', data.data.jwt);
console.log(data.data.jwt)});
console.log(jwt.decode(token));
}我也尝试过jwt-decode库中的解码器,但没有成功:
var decoded = jwtdecode(token);这样,它就会显示''Uncaught (in promise) n‘{message:’指定的令牌无效‘}’‘
发布于 2021-11-20 14:37:05
应在then块内移动console.log(jwt.decode(token))或使用async函数:
import jwt from 'jsonwebtoken';
async function loginRequest() {
try {
const { data } = await axios.post(
'https://afe2021fitness.azurewebsites.net/api/Users/login',
state
);
const token = data.jwt;
localStorage.setItem('jwtToken', token);
console.log(token);
console.log(jwt.decode(token));
} catch (err) {
console.log(err);
}
}发布于 2021-11-20 14:34:38
问题是您在初始化token变量之前尝试使用它。在从await返回Promise之前,您还需要使用axios.post。现在,在调用loginRequest之前必须使用await。因此,最终的代码如下所示:
import jsonwebtoken from "jsonwebtoken";
async function loginRequest() {
const response = await axios.post("https://afe2021fitness.azurewebsites.net/api/Users/login", state)
const { jwt } = response.data
localStorage.setItem("jwtToken", jwt);
console.log(jwt);
console.log(jsonwebtoken.decode(jwt));
}https://stackoverflow.com/questions/70046820
复制相似问题