gpt4 book ai didi

java - Spring AuthenticationAuditListener 添加有关目标 URL 的信息

转载 作者:行者123 更新时间:2023-12-01 18:30:45 24 4
gpt4 key购买 nike

Spring启动执行器提供了AuthenticationAuditListener类,该类公开Spring安全身份验证事件AbstractAuthenticationEvent。我正在使用自定义事件监听器记录这些事件。

我试图向这些 AbstractAuthenticationEvent 暴露的事件添加有关请求者尝试连接的 URL 的附加信息。不幸的是,我所有的尝试都失败了。

我的问题是是否有方便的方法来用目标 URL 路径填充这些事件?

最佳答案

M.Deinum评论中建议,提供自定义 WebAuthenticationDetailsAuthenticationDetailsS​​ource 就可以做到这一点。

我必须创建所需的 WebAuthenticationDetails 类

public class ExtendedWebAuthenticationDetails extends WebAuthenticationDetails {

private final String requestUrl;

public ExtendedWebAuthenticationDetails(HttpServletRequest request) {
super(request);
this.requestUrl = request.getRequestURI();
}

public String getRequestUrl() {
return requestUrl;
}
}

并在自定义 WebAuthenticationDetailsS​​ource 中使用它

@Component
public class CustomWebAuthenticationDetailsSource extends WebAuthenticationDetailsSource {

@Override
public WebAuthenticationDetails buildDetails(HttpServletRequest context) {
return new ExtendedWebAuthenticationDetails(context);
}
}

最后,告诉Spring security使用配置的authenticationDetailsS​​ource

@Configuration
@EnableWebSecurity
public class SecurityCommonConfiguration extends WebSecurityConfigurerAdapter {

@Autowired
private WebAuthenticationDetailsSource detailsSource;

...

@Override
protected void configure(HttpSecurity http) throws Exception {
http.httpBasic().authenticationDetailsSource(detailsSource);
}
}

因此,所有 AbstractAuthenticationEvent 触发的事件都会通过 getDetails() 方法调用返回 ExtendedWebAuthenticationDetails。这样就可以访问所需的请求 URL。

关于java - Spring AuthenticationAuditListener 添加有关目标 URL 的信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60170515/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com