【发布时间】:2018-09-24 13:00:37
【问题描述】:
我不明白,授权后如何获取用户信息。现在我只是得到 user.jsp 页面没有任何东西,我应该在上面写什么。据我了解,我应该制作 servlet,但我无法理解我应该在其中写什么。
我的过滤器:
public class AuthenticationFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void destroy() {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;
String login = request.getParameter("login");
String password = request.getParameter("password");
UserDaoImpl userDao = new UserDaoImpl();
HttpSession session = request.getSession();
if (nonNull(session) && nonNull(session.getAttribute("login")) && nonNull(session.getAttribute("password"))) {
User.ROLE role = (User.ROLE) session.getAttribute("role");
moveToMenu(request, response, role);
} else if (userDao.userIsExist(login, password)) {
User.ROLE role = userDao.getRoleByLoginPassword(login, password);
request.getSession().setAttribute("password", password);
request.getSession().setAttribute("login", login);
request.getSession().setAttribute("role", role);
moveToMenu(request, response, role);
} else {
moveToMenu(request, response, User.ROLE.UNKNOWN);
}
}
private void moveToMenu(HttpServletRequest req, HttpServletResponse res, User.ROLE role) throws ServletException, IOException {
if (role.equals(User.ROLE.ADMIN)) {
req.getRequestDispatcher("/WEB-INF/view/adminPage.jsp").forward(req, res);
} else if (role.equals(User.ROLE.USER)) {
req.getRequestDispatcher("/WEB-INF/view/userPage.jsp").forward(req, res);
} else {
req.getRequestDispatcher("/WEB-INF/view/index.jsp").forward(req, res);
}
}
}
【问题讨论】:
-
userDao.getRoleByLoginPassword(login, password)- 这吓到我,它似乎表明你以纯文本形式存储密码。
标签: java servlets jakarta-ee servlet-filters