I have fronted that made on react and backend that made on express, i try to make jwt authitication, for this i use cookie, but i got error, this is my '/login' route from express
app.post('/login',async (req,res)=>{
const {login, pwd } = req.body
const user = req.body
const isUserExist = await User.findOne({login:login})
if(!isUserExist){
console.log('wrong login')
} else{
bcrypt.compare(pwd,isUserExist.pwd).then((match)=>{
if(!match){
console.log("wrong pwd")
} else{
const accessToken = createToken(user)
const validtoken = verify(accessToken,"jwt-secret")
res.cookie("token",accessToken,{
maxAge:60*60*24*30*1000
})
console.log(req.cookies["token"])
req.cookies["token"]
res.redirect('/')
}
})
}
})
accesToken work correctly and validtoken give me correct data, also i log req.cookies['token'] to see what it is inside, but i got error that 'token' is undefined
localhost for react is 3000 for express 5000
this what i use to display data
router.get("/userData",async (req, res) => {
const accessToken = req.cookies["token"]
const validtoken = verify(accessToken,"jwt-secret")
const user = await User.findOne({login:validtoken.login})
res.send(user)
});
and inside component
this.takeUserData()
.then(res => this.setState({ data: res }))
.catch(err => console.log(err));
takeUserData = async() =>{
const response = await fetch('/userData');
const body = await response.json();
if (response.status !== 200) {
throw Error('1234')
}
return body;
}