到目前为止我得到了什么:
这一切都以一个 HTML 表单开始,该表单提示用户输入用户名和密码。它将获取的用户/通行证从那里发布到 servlet GateKeeper。 GateKeeper 确定用户/密码组合是否匹配 MySQL 数据库中的任何记录。
这是我使用的 sql:SELECT id FROM Users WHERE username='?' AND password=MD5('?')
其中?指示以前的 HTML 表单提供的信息。
我现在需要的是: 我需要一些方法来将记录的用户名和 ID 存储在数据库中。成功后,GateKeeper 将用户重定向到控制面板。因此,我需要一种方法来引用用户名以显示简单的问候语等,还有 id 以消除对数据库的不必要调用。控制面板可以对 Servlet 进行 AJAX 调用,从而对 MySQL 数据库执行某种任务。
最佳答案
只需将登录用户存储在 session 中。
User user = userDAO.find(username, password);
if (user != null) {
request.getSession().setAttribute("user", user);
// Display home page.
} else {
// Display login form with error message.
}
然后它只能由 ${user}
在 JSP EL 中使用。
<p>Welcome back, <c:out value="${user.fullname}" /></p>
另一个优点是您可以在 Filter
的帮助下检查 session 中是否存在登录用户以阻止/允许访问某些页面。
相关问题:
顺便说一下,你的 preparedstatement SQL 在语法上是无效的。它应该没有单引号。
SELECT id FROM Users WHERE username=? AND password=MD5(?)
关于java - servlet 身份验证和对凭据的进一步引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4528605/