当前位置: 首页 > 知识库问答 >
问题:

java - springsecurity oauth2.0 记录登录日志咨询?

鞠宏恺
2023-04-23

springsecurity oauth2.0 谁做过记录登录日志?监听事件好像没法区分是什么原因失败的、比如client错误还是用户名错误

共有1个答案

龚国源
2023-04-23

Spring Security OAuth2.0 是一个流行的 Java 安全框架,提供对 OAuth2.0 和 OpenID Connect 的支持。在 Spring Security OAuth2.0 中,您可以通过实现并注册自定义的事件监听器来记录登录日志。要区分不同的登录失败原因,您可以检查与登录失败事件相关联的异常。

下面是一个简单的示例,说明如何实现一个事件监听器以记录登录日志:

1、创建一个自定义的 ApplicationListener 类,监听 AbstractAuthenticationFailureEvent:

import org.springframework.context.ApplicationListener;
import org.springframework.security.authentication.event.AbstractAuthenticationFailureEvent;

public class CustomAuthenticationFailureListener implements ApplicationListener<AbstractAuthenticationFailureEvent> {

    @Override
    public void onApplicationEvent(AbstractAuthenticationFailureEvent event) {
        // 在这里处理登录失败事件
    }
}

2、在 onApplicationEvent 方法中,您可以检查事件的异常类型,以区分登录失败的原因:

@Override
public void onApplicationEvent(AbstractAuthenticationFailureEvent event) {
    Exception exception = event.getException();
    if (exception instanceof BadCredentialsException) {
        // 处理用户名或密码错误的情况
    } else if (exception instanceof InvalidClientException) {
        // 处理 client 错误的情况
    } else {
        // 处理其他类型的异常
    }
}

3、将自定义的事件监听器注册为一个 Spring Bean,以便 Spring 容器能够自动识别并使用它:

@Configuration
public class SecurityConfig {

    @Bean
    public CustomAuthenticationFailureListener customAuthenticationFailureListener() {
        return new CustomAuthenticationFailureListener();
    }
}

这样,您就可以在 CustomAuthenticationFailureListener 中记录登录日志,并根据不同的异常类型区分登录失败的原因。根据需要,您还可以扩展此示例,以处理更多类型的事件和异常。

 类似资料:
  • 我想在我的应用程序中使用SLF4J+logback用于两个目的--日志和审计。 14:41:57.978[main]信息AUDIT_LOGGER-110欢迎使用main 如何确保审核消息在审核记录器下只出现一次?

  • 问题内容: 我正在考虑将Redis用于Web应用程序日志记录目的。我用谷歌搜索,有人将日志转储到Redis队列/列表中,然后将计划的工作人员转储到磁盘中。 http://nosql.mypopescu.com/post/8652869828/another-redis-use-case- centralized-logging 我希望寻求理解,为什么不直接使用Redis持久化到磁盘?如果我分配了一

  • logging 模块自 2.3 版以来一直是 Python 标准库的一部分。在 PEP 282 中有对它的简洁描述。除了 基础日志教程 之外,这些文档是非常难以阅读的。 日志记录一般有两个目的: 诊断日志 记录与应用程序操作相关的日志。例如,当用户遇到程序报错时, 可通过搜索诊断日志以获得上下文信息。 审计日志 为商业分析而记录的日志。从审计日志中,可提取用户的交易信息, 并结合其他用户资料构成用

  • 我正在迁移一个遗留的应用程序来使用logback,在这个过程中我试图保持所有的旧功能以相同的方式工作。遗留应用程序所做的一件事是,如果无法写入日志文件(由于空间不足、权限不正确等原因),则将日志记录到控制台 对于logback,似乎应该由StatusListener来处理这个问题,我可以使用getOrigin获得筛选后的附加程序,但我不知道如何获得与origin附加程序相关联的日志记录程序。有可能

  • 我使用的是Flyway java API。 我想在我的日志中看到操作。 如何设置flyway日志?

  • 主要内容:修改日志管理器配置每个初学者都很熟悉在有问题的代码中使用 System.out.println 方法在控制台打印消息,来帮助观察程序运行的操作过程。如果你使用  System.out.println 方法,一旦发现问题的根源,就要将这些语句从代码中删去。如果接下来又出现了问题,就需要再插入几个调用 System.out.println 方法的语句,如此反复,增加了工作量。 日志用来记录程序的运行轨迹,方便查找关键信