node.js - Node.js 中的用户 session

标签 node.js

我有一个带有用户名密码字段的表单,它将用户名和密码存储在node.js中 如何跟踪单个用户登录的次数。我想在登录用户列表中的每个用户名旁边输出用户的 session 数

index.js:

var loggedInUsers = {};
var LoggedIn = 'TheUserIsLoggedIn';
function index(req, res) {
    if (req.session.username) {
        res.redirect("/users");
    } else {
debugger;
    res.render('index', { title: 'COMP 2406 Session Demo', 
                  error: req.query.error });
    }
}
function users(req, res) {
    if (req.session.username) {
    res.render("account.jade", {username:req.session.username,
                    title:"Account",
                    loggedInUsers: loggedInUsers});
    } else {
    res.redirect("/?error=Not Logged In");
    }
};
function login(req, res) {
    var username = req.body.username;
    req.session.username = username;
    loggedInUsers[username] = LoggedIn;
    res.redirect("/users")
}
function logout(req, res) {
    delete loggedInUsers[req.session.username];
    req.session.destroy(function(err){
        if(err){
            console.log("Error: %s", err);
        }
    });
    res.redirect("/");
}
exports.index = index;
exports.users = users;
exports.login = login;
exports.logout = logout;

最佳答案

如果没有任何持久层,我建议:

if( loggedInUsers[username] ) {    
    loggedInUsers[username].timesLoggedIn++;
    loggedInUsers[username].sessions.push( req.session );
}
else {
    loggedInUsers[username] = {
        timesLoggedIn : 0,
        sessions : []
    };
}

而不是:

loggedInUsers[username] = LoggedIn;

关于node.js - Node.js 中的用户 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19397997/

相关文章:

javascript - nodejs/快速测试

javascript - 查询mysql数据库时出现ETIMEDOUT错误

node.js - 在服务器中部署时将 API 请求路由到 MEAN 应用程序中的 Node 服务器

node.js - Jade 模板 if 语句

javascript - 使用 Chokidar 监视特定的文件扩展名

javascript - 需要一个模块如何影响 Node.js 的性能?

node.js - Mocha : How to test Express rendered views

node.js - npmzip 有替代方案吗?

javascript - 只允许经过 passportjs 身份验证的用户访问 protected 页面

node.js - Express-jwt - isRevoked : done is not a function