2

node.js にユーザー名とパスワードを保存するユーザー名パスワード フィールドを持つフォームがあります。個々のユーザーがログインした回数を追跡するにはどうすればよいですか。各ユーザー名の横にあるユーザーのセッション数を出力したいログインしているユーザーのリスト

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;
4

1 に答える 1

0

永続化レイヤーがなければ、次のことをお勧めします。

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

それ以外の:

loggedInUsers[username] = LoggedIn;
于 2013-10-16T08:37:10.453 に答える