Java 如何检查用户是否登录到servlet?
在Java Servlet中,我想通过编程检查用户是登录还是未登录另一个答案中指出的,只有当您使用Java EE提供的容器管理安全性时,才适用 然而,如果你在家里发展你自己的安全,那么你需要依靠。这并不难,以下是您需要在每个步骤中实施的概述: 登录时,从数据库获取Java 如何检查用户是否登录到servlet?,java,jakarta-ee,authentication,servlets,Java,Jakarta Ee,Authentication,Servlets,在Java Servlet中,我想通过编程检查用户是登录还是未登录另一个答案中指出的,只有当您使用Java EE提供的容器管理安全性时,才适用 然而,如果你在家里发展你自己的安全,那么你需要依靠。这并不难,以下是您需要在每个步骤中实施的概述: 登录时,从数据库获取用户,并将其存储在会话中的doPost(): 注销时,只需在servlet的doPost()中使会话无效。它将销毁会话并清除所有属性 session.invalidate(); 要检查用户是否登录,请创建一个映射有url模式,该模式覆
用户
,并将其存储在会话中的doPost()
:
注销时,只需在servlet的doPost()
中使会话无效。它将销毁会话并清除所有属性
session.invalidate();
要检查用户是否登录,请创建一个映射有url模式
,该模式覆盖受限制的页面,例如/secured/*
,/protected/*
,等等,并实现doFilter()
,如下所示:
if (session.getAttribute("user") == null) {
response.sendRedirect(request.getContectPath() + "/login"); // Not logged in, redirect to login page.
} else {
chain.doFilter(request, response); // Logged in, just continue chain.
}
基本上就这些
另见:
(第13.10节)规定:
在处理请求期间登录到应用程序,正好对应于存在与请求相关联的有效非null
调用方标识,这可以通过调用请求上的getRemoteUser
或getUserPrincipal
来确定。这些方法中任何一种的返回值null
表示调用方未登录到应用程序中处理请求
谢谢,我能工作。但是请告诉我如何在servlet中设置usename,以便getUserPrincipal()进一步调用它。您不能在J2EE应用程序中设置主体。应用服务器必须改变这一点。您的应用程序只需提供安全规则的定义及其对servlet的分配,其余的由应用程序服务器完成(即识别用户并授权他们访问特定端点)。有许多关于J2EE安全的教程,例如,这里有一个:chain.doFilter(request,response);
这里的链是什么?
if (session.getAttribute("user") == null) {
response.sendRedirect(request.getContectPath() + "/login"); // Not logged in, redirect to login page.
} else {
chain.doFilter(request, response); // Logged in, just continue chain.
}