Java 如何跟踪用户是否通过会话登录?

Java 如何跟踪用户是否通过会话登录?,java,session,login,Java,Session,Login,我正试图想出一种机制来检查用户是否已登录,因为我的web服务上的某些页面仅对注册用户可用。我的想法在下面的伪代码中正式化了 void login(username, password) { if (username == db.user.username && password == db.user.password) username.session = startSession(username); else

我正试图想出一种机制来检查用户是否已登录,因为我的web服务上的某些页面仅对注册用户可用。我的想法在下面的伪代码中正式化了

void login(username, password)
{
      if (username == db.user.username && password == db.user.password)
          username.session = startSession(username);
      else
            response.redirect("/login");
}

String startSession(String username)
{
     String sessionID = encoder.encode(randomBytes, username);  /* generates
a random session id*/
     mysql.session_table.insert(username, sessionID);  /* save the session 
id to session table */

     return sessionID;
}

String getSession(String username)
{
     return username.session;
}


boolean isSessionNew(sessionID)
{
     if (sessionID.age > threshold)
           return false;
     else
           return true;
}
基本上,当用户成功登录时,我将生成一个随机会话ID(startSession方法),并将sessionID、用户名及其创建的时间戳保存到mysql数据库表“session”中。当用户访问受保护的网页时,该网页将检查用户是否具有有效的会话ID(按会话的年龄)


我对这种设计的担心是,它可能会在与数据库通信时产生太多的开销。有没有更简单安全的方法来跟踪用户登录会话?

会话跟踪是一项非常常见的任务。。。您有一个HttpSession对象(),可以在其中存储属性。您还可以使用HttpSessionContext对象查找所有有效会话

这里有一个简短的提示: