![7341186583657c4a97de71a1b986b5a8.png](https://img-blog.csdnimg.cn/img_convert/7341186583657c4a97de71a1b986b5a8.png)
【WEB 系列】RestTemplate 之 Basic Auth 授权
前面介绍的 RestTemplate 的所有使用姿势都是不需要鉴权的,然而实际情况可不一定都这么友好;Http Basic Auth 属于非常基础的一种鉴权方式了,将用户名和密码以 Base64 编码之后,携带在请求头,从而实现身份校验;
本文将主要介绍 RestTemplate 实现 Basic Auth 鉴权的几种姿势
I. 项目环境
博文测试项目完全基于【WEB 系列】RestTemplate 基础用法小结 的项目环境,建议配合查看
基本环境:IDEA
+ maven
+ SpringBoot 2.2.1.RELEASE
1. 鉴权端点
private String getHeaders(HttpServletRequest request) {
Enumeration headerNames = request.getHeaderNames();
String name;
JSONObject headers = new JSONObject();while (headerNames.hasMoreElements()) {
name = headerNames.nextElement();
headers.put(name, request.getHeader(name));
}return headers.toJSONString();
}private String getParams(HttpServletRequest request) {
return JSONObject.toJSONString(request.getParameterMap());
}private String getCookies(HttpServletRequest request) {
Cookie[] cookies = request.getCookies();if (cookies == null || cookies.length == 0) {
return "";
}
JSONObject ck = new JSONObject();for (Cookie cookie : cookies) {
ck.put(cookie.getName(), cookie.getValue());
}return ck.toJSONString();
}private String buildResult(HttpServletRequest request) {
return buildResult(request, null);
}private String buildResult(HttpServletRequest request, Object obj) {
String params = getParams(request);
String headers = getHeaders(request);
String cookies = getCookies(request);if (obj != null) {
params += " | " + obj;
}return "params: " + param