【发布时间】:2021-09-06 12:54:03
【问题描述】:
我正在使用 axios get request 来检查用户是否使用 jwt 登录,但是,当应用程序启动时,它一直显示加载状态,如果在应用程序第一次启动时它设置为 true,那么它应该发出 get 请求并验证用户,然后将加载状态设置为 false 并导航到特定路线。我得到的是加载状态始终为真,请求不发送到后端服务器。
这里是检查用户是否登录的功能:
useEffect(() => {
const checkLoggedIn = async () => {
const Token = await AsyncStorage.getItem('Token');
if (Token) {
axios.get('http://localhost:3000/isUserAuth', {
headers: {
'x-access-token': Token
}
}).then((res) => {
setUser(res.data.user)
AsyncStorage.setItem("Token", res.token);
setIsLoading(false);
}).catch((error) => {
console.log(error)
setIsLoading(false);
});
} else {
setUser(null);
setIsLoading(false)
}
}
checkLoggedIn();
}, []);
这是后端:
app.get('/isUserAuth', verifyJWT, (req, res) => {
const token = req.headers['x-access-token'];
let sqlCheck = `SELECT * FROM users where id =?`;
CON.query(sqlCheck, req.user, (err, user) => {
if (user) {
console.log(user)
return res.status(400).json({ auth: true, user: user, Token: token })
}
})
})
希望有人帮助我找出问题所在。谢谢
【问题讨论】:
标签: javascript react-native express jwt