我需要知道 tomcat 何时接受对给定上下文使用领域身份验证的登录。我一直在查看可能的可用监听器(ServletContextListener 和 ServletContextAttributeListener),但无法弄清楚如何在发生登录时收到通知。这在对多个上下文使用 tomcat 单点登录时也应该有效。有什么想法吗?
最佳答案
不幸的是,没有标准/抽象的方法可以使用 Servlet API Hook 它。您需要编写特定于应用程序服务器的逻辑或实现一个全局过滤器,它每次都检查 HttpServletRequest#getUserPrincipal()
。例如:
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) {
HttpServletRequest request = (HttpServletRequest) req;
Principal user = request.getUserPrincipal();
HttpSession session = request.getSession(false);
if (user != null && (session == null || session.getAttribute("user") == null)) {
request.getSession().setAttribute("user", user);
// First-time login. You can do your intercepting thing here.
}
chain.doFilter(req, res);
}
关于java - 监听tomcat realm认证事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1724074/