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

高优先级筛选器中的Servlet主体,使用Spring Security

司徒高寒
2023-03-14

我们的Spring Boot1.3.3应用程序使用Spring Security。我们需要记录HTTP请求,包括请求的URL、HTTP谓词、处理时间、用户主体。

当使用Spring Security时,是否有一种标准的方法(意味着没有线程本地魔法)总是从自定义筛选器中获取用户主体?

谢谢你抽出时间。

共有1个答案

孙德宇
2023-03-14

当您使用Spring Security时,主体很可能是由Spring Security机器精确设置的。但更糟糕的是,它使用了请求包装,因此您在调用FilterChain之前找不到主体,因为它没有被设置,在调用之后也找不到主体,因为它是在一个不再存在的HttpServletRequestWrapper中设置的。

因此,最好的选择是在Spring Security链中放置一个自定义筛选器,就在ExceptionTranslationFilter之前,在链接后记录并传递任何异常。

 类似资料:
  • 我需要一个优先级队列,它首先获得具有最高优先级值的项目。我当前正在使用队列库中的PriorityQueue类。但是,这个函数只先返回值最小的项。我尝试了一些很难看的解决方案,比如(sys.maxint-priority)作为优先级,但我只是想知道是否存在更优雅的解决方案。

  • 我的第一个想法是有两个COSUMER,每个队列一个,从每个队列获取消息并将它们放入java.util.PriorityQueue中,但我希望避免插入(和排序/阻塞/同步)的开销,因为会有大量的消息。 然后,我考虑了usign java.nio,但我想不出这是否可能。 我的想法是仍然拥有两个使用者,但现在他们将任务放在两个nio.buffer(高优先级缓冲区和低优先级缓冲区)中,这些缓冲区绑定到ni

  • 高级筛选 即对“基础数据”模块内所有图层(包含网点图层、区划图层、线路图层)数据,指定字段,进行按条件筛选,筛选结果可以做统计分析 可以对多个图层、多个条件设置进行筛选 对筛选结果,进行统计分析 操作指南: 1.在“统计分析”模块,进入“高级筛选”,添加筛选条件; 支持各类筛选条件: 数值型 日期型 文本型 下拉(即单选) 多选 链接 电话 2.支持连续添加多个条件,对条件进行设置 筛选方式: 全

  • 我目前正在研究分布式应用程序的性能。我的目标是网络组件。目前,每个连接都有一个专用线程,在阻塞模式下处理套接字。我的目标是减少线程数量(不降低性能),如果可能的话,提高性能。 我重新设计了网络组件以使用异步通信,并尝试使用1到2个线程来处理整个网络。我做了一个简单的测试,我从一个节点在一个循环中写入,然后在另一个节点上读取,这是为了测试最大nw线程能力,我发现我的繁忙循环实现消耗了100%的cpu

  • 我正在使用Kafka Consumer阅读多个主题,我需要其中一个具有更高优先级。处理需要很多时间,而且(低优先级)主题中总是有很多消息,但我需要尽快处理来自另一个主题的消息。 这和Kafka是否支持主题或消息的优先级类似?但这一个使用的是旧的API。 在新的API(0.10.1.1)中,有一些方法 但我不清楚,如何有效地检测高优先级主题中有新消息,有必要暂停其他主题的消费。 有什么想法/例子吗?

  • 我有两个SQS队列:一个用于低优先级,另一个用于高优先级消息。逻辑是不要接触低优先级队列上的消息,除非高优先级队列为空。 现在,我将这两条路由设置为同时使用队列中的消息。我想要的是,一个消息进入高优先级路由触发低优先级路由的停止。为了尝试获得此功能,我尝试使用一种路由策略,当在高优先级路由上启动新交换时,该策略将停止低优先级队列: (来自的片段) 然而,我不确定如何重新启动低优先级的消费者。骆驼提