Java 如何跟踪用户是否通过会话登录?
我正试图想出一种机制来检查用户是否已登录,因为我的web服务上的某些页面仅对注册用户可用。我的想法在下面的伪代码中正式化了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
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对象查找所有有效会话 这里有一个简短的提示: