java - 监听tomcat realm认证事件

标签 java authentication tomcat

我需要知道 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/

相关文章:

java - 点燃 2 个缓存的数据关联性

php - 保护我的 PHP 页面免受未经授权的查询

eclipse - 通过 M2eclipse 和 Maven 从 eclipse 部署到 tomcat

java - 插入 System.out.println 调用会影响竞争条件 : how to debug?

java - 如何使用 Selenium WebDriver 和 Java 多次单击同一个按钮

java - 平均图像的四个像素会产生不稳定的颜色

security - 保护 .NET Core MVC 网站免受暴力登录尝试(通过内置方式)

ios - NEHotspotHelper:无法在身份验证状态机的身份验证状态下发送 Web 请求

java - 如何使用maven更改tomcat服务器的端口号

java - 如何在 Tomcat 服务器上使用 jfs 在 Java Web 应用程序中定义文件路径