servlet身份验证和对凭据的进一步引用

时间:2010-12-24 22:46:00

标签: java authentication servlets

到目前为止我得到了什么: 这一切都以HTML表单开头,提示用户输入用户名和密码。从那里它将获取的用户/传递发布到servlet,GateKeeper。 GateKeeper确定用户/传递组合是否匹配MySQL数据库中的任何记录。 这是我使用的sql:SELECT id FROM Users WHERE username='?' AND password=MD5('?')在哪里?表示提供以前HTML表单的信息。

我现在需要的是: 我需要一些方法来存储数据库中记录的用户名和ID。 GateKeeper成功将用户重定向到控制面板。因此,我需要一种方法来引用用户名来显示简单的问候语等,以及id,这样就可以消除对数据库的不必要的调用。控制面板可以对Servlet进行AJAX调用,从而为MySQL数据库执行某种任务。

1 个答案:

答案 0 :(得分:2)

只需将登录用户存储在会话中。

User user = userDAO.find(username, password);
if (user != null) {
    request.getSession().setAttribute("user", user);
    // Display home page.
} else {
    // Display login form with error message.
}

然后在JSP EL中由${user}提供。

<p>Welcome back, <c:out value="${user.fullname}" /></p>

另一个优点是,您只需检查会话中是否存在已登录用户,即可在Filter的帮助下阻止/允许访问某些页面。

相关问题:


顺便说一下,你的预备语句SQL在语法上是无效的。它应该没有单引号。

SELECT id FROM Users WHERE username=? AND password=MD5(?)