异常日志捕获问题,发生异常时,如果只有GET能获取到请求参数.POST PUT不行

提问 已结 2 89
HaliComing
HaliComing 2020-01-19
悬赏:20积分
版本:renren-security 2.1.0 开发环境:JDK8、IDEA、Chrome
异常日志捕获问题,发生异常时,如果只有GET能获取到请求参数.POST PUT不行。 数据库异常日志中:只有GET能获取到request_params。POST,PUT等都获取不到。 异常的现场没有保存好 这边查看了RenExceptionHandler.saveLog()中没有保存请求体,但是修改后获取请求体为空。由于请求体只能读一次,然后使用了包装Request,但是系统已经有一个XssFilter了,而且Order顺序为MAX_VALUE。我再写一个RequestWrapper,并将Order放在最后,但是,Act工作流中有用到这个对象,强制转换XssHttpServletRequestWrapper肯定会报异常,这一点设计不是很好。所以,现在我加一个RequestWrapper,也没有办法加。因为异常捕获后,过滤器的传递,导致在RenExceptionHandler中拿到的request对象一定是Order顺序为MAX_VALUE的最后一个,目前为XssFilter,但是修改,其他地方就会异常。原因是其他代码中认为XssHttpServletRequestWrapper是最后一个request对象。 希望官方下个版本可以改改。 异常日志保存现场很重要,方便维护和开发。
回帖
  • HaliComing
    HaliComing (楼主)
    2020-01-19
    目前我现在改动最小最爽的,但是不推荐的方案,我是这样直接临时改了改。直接XssHttpServletRequestWrapper中,新增一个byte[] body字段,获取body里的数据保存一下,saveLog里就能直接取出来用了。不过,不推荐,建议还是日志和Xss分开来做。会更好一点。
    1
  • @HaliComing 嗯嗯,后面我们把这块优化一下
    0
本帖已结贴