首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring添加有关目标AuthenticationAuditListener的信息

Spring添加有关目标AuthenticationAuditListener的信息
EN

Stack Overflow用户
提问于 2020-02-11 21:56:36
回答 1查看 149关注 0票数 0

Spring boot actuator提供了公开Spring安全身份验证事件AbstractAuthenticationEventAuthenticationAuditListener类。我使用自定义事件侦听器记录这些事件。

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

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

EN

回答 1

Stack Overflow用户

发布于 2020-02-12 16:56:15

正如M.Deinum在评论中所建议的那样,提供自定义的WebAuthenticationDetailsAuthenticationDetailsSource就可以做到这一点。

我必须创建所需的WebAuthenticationDetails类

代码语言:javascript
复制
public class ExtendedWebAuthenticationDetails extends WebAuthenticationDetails {

    private final String requestUrl;

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

    public String getRequestUrl() {
        return requestUrl;
    }
}

并在自定义WebAuthenticationDetailsSource中使用它

代码语言:javascript
复制
@Component
public class CustomWebAuthenticationDetailsSource extends WebAuthenticationDetailsSource {

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

最后,告诉Spring security使用配置好的authenticationDetailsSource

代码语言:javascript
复制
@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。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60170515

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档