如何跟踪用户是否按会话登录?

时间:2014-05-19 18:39:33

标签: java session login

我正在尝试提供一种机制来检查用户是否已登录,因为我的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&#34 ;。当用户访问受保护的网页时,该页面将检查用户是否具有有效的会话ID(按会话的年龄)。

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

1 个答案:

答案 0 :(得分:1)

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

这是一个快速的啧啧:http://www.tutorialspoint.com/servlets/servlets-session-tracking.htm