Я делаю POST-запрос к API с суперагентом, это в основном api входа в систему, который подписывает токен и устанавливает cookie.
Код для запроса от реакции выглядит следующим образом
agent
.post('http://localhost:3010/api/auth/login')
.send({username:this.state.username,password:this.state.password})
.end((err,res)=>{
if(err) console.log(err);
if(res.body.auth===true){
alert("Successful Login , You'll be Redirected");
history.push('/dashboard');
}
});
На моем экспресс-сервере я использую этот код:
router.post('/login', function(req, res) {
User.findOne({ username: req.body.username }, function (err, user) {
if (err) return res.status(500).send('Error on the server.');
if (!user) return res.status(404).send('No user found.');
var passwordIsValid = bcrypt.compareSync(req.body.password, user.password);
if (!passwordIsValid) return res.status(401).send({ auth: false, token: null });
var token = jwt.sign({ id: user._id, role : user.role }, config.secret, {
expiresIn: 86400 // expires in 24 hours
});
res.cookie('auth',token);
res.status(200).send({ auth: true, token: token });
});
});
Я устанавливаю файл cookie в ответ, но проблема в том, что файл cookie никогда не устанавливается в браузере. Эта проблема возникает не тогда, когда я использую POSTMAN для проверки APIS, но проблема возникает при использовании apis в реакции в реальных браузерах.
Где я не прав? Или какой еще метод лучше использовать, чтобы добиться результата