在Java Servlet的我想编程方式检查用户是否登录或没有。
将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.".
}
注销后,只需使servlet的会话无效即可doPost()
。它将破坏会话并清除所有属性。
session.invalidate();
要检查如果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.
}
基本上就是全部。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句