Não estou conseguindo salvar cookie no navegador pelo NodeJs e express. Já tentei vários tutoriais (inclusive aqui no Stack), mas nenhuma alternativa que tentei deu certo.
Quando olho no Network, vejo que a resposta é devolvida com Cookie certinho, mas não salva no navegador!
Minha árvore contém: No Beck-end/servidor: app.js, server.js e algumas páginas de Rotas (js tbm). No front-end: página de login em html, e envio dos dados (FETCH) em js.
APP.JS
import express from "express";
import * as dotenv from "dotenv";
import fRouter from "../../2.service/routes/A.index.js";
import cookieParser from "cookie-parser";
import cors from "cors";
const app = express();
export default app;
dotenv.config();
app.use(cookieParser());
app.use(cors({
origin: 'http://fivil.equilibre.eng.br',
credentials: true
}));
app.use(express.json()); //
app.use(express.urlencoded({ extended: true }));
fRouter(app);
SERVER.js:
import app from "./app.js";
import {} from "dotenv/config";
// import db from "../configDb/dbConect.js";
app.listen(3333, () => {
// dbConnect();
console.log(
`server is running on port: (3333); .env.PORT: ${process.env.PORT} `
);
});
userRouter.JS:
import express from "express";
import userDataRegisterValidation from "../busnessRule/login e register/register/userDataRegisterValidation.js";
import userInputLoginValidation from "../busnessRule/login e register/login/userDataLoginValidation.js";
import cookieParser from "cookie-parser";
import jwt from "jsonwebtoken";
const userRoutes = express.Router();
userRoutes
.post("/userLogin", (req, res) => {
teste();
async function teste() {
var statusLogin = await userInputLoginValidation(req.body);
console.log("Status do login é: " + statusLogin);
if (statusLogin) {
let token = jwt.sign(
{
id_user: statusLogin, // aqui é o CPF criptografado com SHA512
//adicionar número randomico e salvar em alguma variável do banco de dados do usuário a cada login?
},
process.env.JWT_KEY
);
console.log("o JWT_KEY é:" + process.env.JWT_KEY)
res.cookie("access_token", "token Aqui. Teste");
res.json({ token: token });
}
if (!statusLogin) {
res
.clearCookie("access_token")
.status(401).json({ msg: "authentication failed" });
}
}
})
Aqui faço o FETCH (js):
async function sendPostUserLogin(type, a, b) {
reqBody = {
cpf: a,
pwd: b,
};
fetch(`http://xx.xx.xxx:3333/auth/userLogin`, {
headers: {
Accept: "application/json",
"Content-Type": "application/json",
mode: 'no-cors',
},
withCredentials: true,
method: "POST",
body: JSON.stringify(reqBody),
})
.then((res) => {
console.log(res)
}) //limpar campo
.catch(err => {
console.log(err)
});
}