如何检查用户是否在Servlet中登录?

Sat*_*tya 9 java authentication servlets java-ee

Java Servlet的我想编程方式检查用户是否登录没有.

Bal*_*usC 11

HttpServletRequest#getUserPrincipal()当你所概述采用Java EE提供的容器管理的安全性,如对方的回答指出,仅适用在这里.

但是,如果你正在养成自己的安全,那么你需要依靠HttpSession.这并不难,这里概述了每个步骤需要实现的内容:

登录时,User从数据库中获取并将其存储在servlet中的 会话中doPost():

User user = userDAO.find(username, password);
if (user != null) {
    session.setAttribute("user", user);
} else {
    // Show error like "Login failed, unknown user, try again.".
}
Run Code Online (Sandbox Code Playgroud)

注销时,只需使servlet中的会话无效doPost().它会破坏会话并清除所有属性.

session.invalidate();
Run Code Online (Sandbox Code Playgroud)

要检查如果User是登录或没有,创建一个过滤器,其映射与url-pattern覆盖限制的页面,例如/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.
}
Run Code Online (Sandbox Code Playgroud)

这基本上都是.

也可以看看: