我无法找到我无法使用我的电子应用程序检查会话的地方。我的应用程序由客户端站点(main.js、preload.js 和渲染器(当然还有一些 html 文件))和带有 Express 的 node.js 后端组成。所有工作都很好,除了一种情况:当用户启动应用程序时,验证一个用户是否在后端有一个自动登录会话。这是 main.js(客户端)文件:
axios.get('http://localhost:9090/oauth/express-session-exist')
.then(response => {
if (response.data.success) {
const userIsConnected = store.get('user_publickey');
if (userIsConnected) {
if (store.get('user_active') == 'false') {
mainWindow.loadFile('discovery.html');
} else {
mainWindow.loadFile('app.html');
}
} else {
mainWindow.loadFile('oauth.html');
}
} else {
const userIsConnected = store.get('user_publickey');
if (userIsConnected) {
store.clear();
}
mainWindow.loadFile('oauth.html');
}
})
.catch(error => {
console.error(error);
mainWindow.loadFile('oauth.html');
});
这是后端功能:
router.get('/express-session-exist', (req, res) => {
if (req.session.user) {
res.json({ success: true, data: req.session.user });
} else {
res.json({ success: false });
}
});
我很确定当我第一次使用这个后端功能登录我的用户时,会话创建得很好:
// Login
router.post('/login', async (req, res) => {
const { email, password } = req.body;
try {
const existingUser = await oauthModel.findUserByEmail(email);
if (existingUser) {
const passwordMatch = await bcrypt.compare(password, existingUser.user_password);
if (passwordMatch) {
// Here, i created the express-session and put in value, then return the value to
// Electron. A console.log() in the client show prefectly the data of the session.
req.session.user = {
publickey: existingUser.user_publickey,
regenerativekey: existingUser.user_regenerativekey,
email: existingUser.user_email,
alias: existingUser.user_alias,
};
const toElectron = req.session.user;
res.status(200).json({ success: true, message: 'user-logged-in', user: toElectron });
} else {
res.status(401).json({ success: false, message: 'wrong-password' });
}
} else {
res.status(401).json({ success: false, message: 'cant-find-email' });
}
} catch (error) {
console.log(error)
res.status(500).json({ success: false, message: 'ie500', error });
}
});
我不知道从哪里看这一点,AXIOS 发送带有 cookie 的请求所以我不知道...感谢阅读我的文章。
有关信息,这是我的 app.js:
// app.js
// Express setup
const express = require('express');
const session = require('express-session');
const app = express();
const port = 9090;
// Chargement des modules
const http = require('http');
const server = http.createServer(app);
const cors = require('cors');
const bodyParser = require('body-parser');
// Utiliser les sessions
const sessionMiddleware = session({
secret: 'mySecret',
resave: true,
saveUninitialized: true,
cookie: {
sameSite: 'Lax',
maxAge: 1000 * 60 * 60 * 24 * 1000,
secure: false // CARE PRODUCTION
}
});
app.use(express.static('public'));
app.use(cors({
origin: ['http://localhost:9090'],
credentials: true
}));
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
app.use(sessionMiddleware);
// Declaration Controllers
const oauthController = require('./controllers/oauth');
// Use Controllers
app.use('/oauth', oauthController);
server.listen(port, () => {
console.log(`Server listening :${port}`);
});
我希望我的路线
/express-session-exist
看到会话已创建并返回 true。但她不断地返回错误。