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

标签 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 数据库执行某种任务。

最佳答案

只需将登录用户存储在 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/

相关文章:

java - String -Java 8 lambda 中的重复项

java - HTML 未正确下载

angular - Ionic 4 - AuthGuard 页面路由权限延迟

Django - 如何执行 PATCH 请求 - ModelSerializer、RetrieveUpdateDestroyAPIView

java - spring 中的 Node response.end() 等效项

Java servlet 异步上下文存在查询

java - 在 servlet 中使用数组中的多个参数

java - JPA - 来自 hibernate 的 LobCreator 模拟?

java - 在特定时间不活动后注销

authentication - Cakephp 与 OpenID 和用户身份验证