I've been trying to make an authentification system with Node.js for a small web app.
So far I've made a login route :
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);
});
Then I created a protected route :
app.get('/homepage', requiresLogin, function(req, res) {
    res.sendFile(__dirname + '/client/homepage.html');
});
And a function that checks if the user is logged :
function requiresLogin(req, res, next) {
    if (req.session.userId) {
        next();
    } 
    else {
        res.send('You must be logged in to view this page.');
    }
}
Client-side, i'm using only JS, with the 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);
Now when I log myself in, the server stores in the session the user's ID.
But when trying to reach /homepage, i get the 'not connected' error.
I could use a global variable to store the session but therefor multi-user would no longer be an option.
I also thought using cookies, like when the user successfully logs in, the server sends him a cookie.
But then how to handle the user's accesses to the pages ?
