如何在Node.js中使用Sessions进行身份验证

时间:2018-03-27 13:17:58

标签: javascript node.js cookies fetch-api express-session

我一直在尝试使用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。

但是如何处理用户对页面的访问?

0 个答案:

没有答案