Я пытался выяснить, что не так с этим кодом для установки файлов cookie на сервере после авторизации входа от клиента. В настоящее время он выводит на консоль пустой объект, представляющий файлы cookie. После того как внутренний сервер проверил вход в систему, он устанавливает файлы cookie следующим образом:
// UserController.js (server-side)
res.cookie('token', token )
.cookie('username', username)
.status(201)
.send(username)
Затем возвращается к этой функции, которая перенаправляет его на новую страницу
/// Login.js (client-side)
const login = async () => {
var token = params.get("token")
const config = {
method: 'POST',
url: url + "/users/fbLogin",
headers: {
"Content-Type": "application/json",
"Access-Control-Allow-Origin": "http://localhost:3000"
},
data: {
fb_id: fb_id,
token: token,
}
}
var res = await axios(config)
if(res.status === 201) {
window.location.assign(`${client_url}/home?user=${res.data}`);
}
}
Когда страница перенаправленный, он отправляет запрос на получение обратно на сервер следующим образом:
// UserHome.js
function validateUser(username){
// axios.defaults.withCredentials = true
const config = {
method: 'GET',
url: url + '/users/auth',
// withCredentials: 'true',
headers: {
"Content-Type": "application/json",
'Access-Control-Allow-Credentials': true,
"Access-Control-Allow-Origin": "http://localhost:3000"
},
data: {
username: username
},
}
try {
var res = axios(config)
} catch(err) {
console.log(err)
}
}
этот запрос обрабатывается этой функцией:
// UsersController.js
UsersController.auth = async function(req, res) {
console.log(req.cookies)
}
, которая в настоящее время печатает это: [Object: null prototype ] {}
Кто-нибудь знает, что я явно делаю неправильно? Я также тестирую его в Chrome и Safari, и у меня возникают те же проблемы.
Настройка express:
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
const cors = require('cors');
const api = require('./api/index.js');
const passport = require('passport')
const cookieParser = require("cookie-parser");
var cookieSession = require('cookie-session')
// setup the connection
const port = process.env.PORT || 5000;
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
// use it before all route definitions
app.use(cors({origin: 'http://localhost:3000'}));
app.use(passport.initialize());
app.use(passport.session());
app.use(cookieSession({
auth: 'session',
keys: 'secret',
maxAge: 900000,
httpOnly: false,
sameSite: false,
overwrite: true
}))
app.use(cookieParser());
app.use('/', api);
app.listen(port, () => console.log(`Listening on port ${port}`));