javarequest添加token

javarequest添加token,第1张

使用Java Request添加令牌可以有效地提供客户端和服务器之间的身份验证和授权,确保客户端发出的请求是可信任的。要添加令牌,首先需要在服务器端生成一个令牌,然后将其作为Header部分发送给客户端,最后,客户端将令牌作为参数附加到request中,发送给服务器。服务器端收到请求后,会检查令牌是否有效,如果有效,则表示客户端的身份可信任,服务器可以处理该请求。

通常,项目当中会添加各种各样的日志,为了方便用户请求流程的跟踪,需要每条日志上添加用户id,reqId等信息。但是通过函数参数的方式传递会比较繁琐,Slf4j为我们提供了一套简洁的处理方案。

一、通过添加Filter实例,在http请求到来时解析用户id和reqId,并将信息保存到Slf4j的MDC中,MDC会将信息保存到当前线程的context map当中;

//创建过滤器,从http头中获取用户id和reqId等信息

@Order(Ordered.HIGHEST_PRECEDENCE)

public class TraceFilter extends OncePerRequestFilter {

    @Override

    protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response,

                                    FilterChain filterChain)throws ServletException, IOException {

    try {

            String uid = request.getHeader("UID")

            String device = request.getHeader("DEVICE")

            String reqId = request.getHeader("REQUEST-ID")

            MDC.put("reqId", reqId)

            MDC.put("uid", uid)

            MDC.put("device", device)

            filterChain.doFilter(request, response)

        } finally {

            MDC.clear()

        }

    }

}

//将过滤器添加到servlet的过滤器链当中

@Configuration

public class WebFilterRegistration {

@Bean

    public FilterRegistrationBeanregisterFilter() {

FilterRegistrationBean filterRegistrationBean =new FilterRegistrationBean()

        filterRegistrationBean.setFilter(new TraceFilter())

        filterRegistrationBean.addUrlPatterns("/*")

        return filterRegistrationBean

    }

}

二、设置log4j的日志格式,注意,日志格式里面的名称与放入MDC中的信息的名称保持一致

<Console name="LogToConsole" target="SYSTEM_OUT">

            pattern="%d %p %c{1.} [%t] [traceId: %X{reqId} ] [userId: %X{uid} ] [device: %X{device} ] %m%n"/>

</Console>

三、在需要打印日志的类上添加@Slf4j注解,就可以使用log.info,error和warn打印带有用户id和reqId信息的日志了。

@Slf4j

public class LogTest {

public static void main(String[] args) {

MDC.put("uid", "1111")

        MDC.put("reqId", "xxxxx")

        MDC.put("device", "2222222")

        log.info("==========================")

        System.out.println("++++++++++++++++++")

    }

}

日志如下:

2020-12-31 17:56:27,817 INFO c.m.s.LogTest [main] [traceId: xxxxx ] [userId: 1111 ] [device: 2222222 ] ==========================

++++++++++++++++++


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11805679.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存