我已经实现了Java EE安全领域,如果用户尝试访问受保护的资源,它将用户重定向到login.jsp。
http://mywebapp/shopping_cart
http://mywebapp/j_security_check
现在,我想从数据库中提取用户的详细信息,但是当重定向请求中没有任何参数时,该如何处理?
他们的用户名已发送到,http://mywebapp/j_security_check但j_security_check向的重定向请求中没有参数http://mywebapp/shopping_cart。那么,用户登录后使用哪种方法访问用户的详细信息?
创建一个过滤器,该过滤器User在会话中不存在来自数据库的关联对象时检查用户是否已登录。然后,只需加载该数据并进行会话即可。
User
基本上,
@WebFilter("/*") public class UserFilter implements Filter { @EJB private UserService service; @Override public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) req; String remoteUser = request.getRemoteUser(); if (remoteUser != null) { HttpSession session = request.getSession(); if (session.getAttribute("user") == null) { User user = service.find(remoteUser); session.setAttribute("user", user); } } chain.doFilter(req, res); } // ... }