我一直在尝试使用Node.js为一个小型网络应用程序创建一个身份验证系统。
到目前为止,我已经建立了登录路线:
app.post('/login', async function(req, res) {
let login = req.body.login;
let password = req.body.password;
let userId = await databaseUsers.verifyUser(login, password);
if(userId != null) {
req.session.userId = userId;
}
res.send(userId != null);
});
然后我创建了一条受保护的路线:
app.get('/homepage', requiresLogin, function(req, res) {
res.sendFile(__dirname + '/client/homepage.html');
});
检查用户是否已登录的功能:
function requiresLogin(req, res, next) {
if (req.session.userId) {
next();
}
else {
res.send('You must be logged in to view this page.');
}
}
客户端,我只使用JS,使用fetch API:
let url = "/login";
let headers = new Headers({
"Content-Type": "application/json"
});
let init = {
method: 'POST',
headers: headers,
cache: 'default',
body: JSON.stringify({'login': user.login, 'password': user.password})
};
let verif = await fetch(url, init);
现在,当我自己登录时,服务器会在会话中存储用户的ID。
但是当我试图访问 / homepage 时,我收到了“未连接”错误。
我可以使用全局变量来存储会话,但多用户将不再是一个选项。
我还想过使用cookies,就像用户成功登录时一样,服务器向他发送cookie。
但是如何处理用户对页面的访问?