Spring RestTemplate的Basic Auth使用
在 org.springframework.web.client.RestTemplate这个类的使用过程中遇到了点小疑惑,这里和大家分享一下,同时也是做个备忘录。
先给结果,后说疑问:
//方法一 使用RestTemplateBuilder来实例化
RestTemplateBuilder builder = new RestTemplateBuilder();
RestTemplate restTemplate = builder.basicAuthentication("username", "password").build();
ResponseEntity<String> entity = restTemplate.getForEntity(url, String.class);
String msg = entity.getBody();
System.out.println(msg);//方法二 使用拦截器
RestTemplate restTemplate = new RestTemplate();
List<ClientHttpRequestInterceptor> interceptors = restTemplate.getInterceptors();
interceptors.add(new BasicAuthenticationInterceptor("username","password"));
ResponseEntity<String> response = restTemplate.getForEntity(url, String.class);
String msg = response.getBody();
System.out.println(msg);//方法三 使用HttpHeaders
RestTemplate restTemplate = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
headers.setBasicAuth("username", "password");
HttpEntity<String> httpEntity = new HttpEntity<String>(headers);
ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.GET, httpEntity, String.class);
String msg = response.getBody();
System.out.println(msg);
以上三种方式都是可行方案,第一种和第二种的好处是可以把身份验证部分抽出来写成公共的,每次调用时只需要注意请求地址和参数即可。第三种是多个地址不同的身份验证,每次都可是自己灵活配置。
第三种方案在测试时发现只能使用restTemplate.exchange才好用,无法使用getForEntity等方法,目前还没找到原因。
下一篇文章再说说WebClient
PS:还有一点忘记说了,有人会建议Base64.encodeBase64去编码(username:password)然后在header里add一个Authorization,这个方式在spring5.1以后官方给出 headers.setBasicAuth("username","password")更简化了代码方案,也就是上面第三种写法。
Spring RestTemplate的Basic Auth使用相关推荐
- Rest Api 项目添加 Basic Auth 认证
title: Rest Api 项目添加 Basic Auth 认证 date: 2022-10-10 22:09 tags: [Java,Spring Boot,Rest Api,Basic Aut ...
- Spring RestTemplate中文乱码解决方案
Spring RestTemplate中文乱码解决方案 参考文章: (1)Spring RestTemplate中文乱码解决方案 (2)https://www.cnblogs.com/accesski ...
- Nginx配置Basic Auth登录认证的实现方法
这篇文章主要介绍了Nginx配置Basic Auth登录认证的实现方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 有时候我们通过nginx搭建了一台文件服务器, 一般 ...
- 配置kubernetes服务basic auth
由于一些内部服务访问并不需要鉴权,如kubernetes-dashboard.traefik-ui,所以当我们想通过外网域名访问的时候会有安全问题.这里我们可以为服务配置basic auth,访问时需 ...
- nginx basic auth配置踩坑记
nginx的basic auth配置由ngx_http_auth_basic_module模块提供,对HTTP Basic Authentication协议进行了支持,用户可通过该配置设置用户名和密码 ...
- java 获取400的错误信息_获取400错误的请求Spring RestTemplate POST
我想使用POST方法使用Spring Rest web服务.我无法在客户端(网站)访问POJO文件,因此必须在客户端使用JSON并在Web服务中使用POJO.下面是我的代码:获取400错误的请求Spr ...
- Spring RestTemplate中几种常见的请求方式GET请求 POST请求 PUT请求 DELETE请求
Spring RestTemplate中几种常见的请求方式 原文地址: https://blog.csdn.net/u012702547/article/details/77917939 版权声明:本 ...
- 具有链接资源的Spring RestTemplate
Spring Data REST是一个了不起的项目,它提供了一些机制来将基于Spring Data的存储库中的资源公开为REST资源. 使用链接资源公开服务 考虑两个简单的基于JPA的实体,课程和教师 ...
- 使用Spring RestTemplate和Super类型令牌消费Spring-hateoas Rest服务
Spring-hateoas为应用程序创建遵循HATEOAS原理的基于REST的服务提供了一种极好的方法. 我的目的不是要展示如何创建服务本身,而是要展示如何将客户端写入服务. 我将要使用的示例服务是 ...
- Nginx下配置Http Basic Auth
nginx basic auth指令 第一条语句: 语法: auth_basic string | off; 默认值: auth_basic off; 配置段: http ...
最新文章
- 智能车百度赛道培训第一弹-基础篇
- 深度学习模型之各种caffe版本(Linux和windows)的网址
- mybatis学习笔记(3)—数据库和bean名称不一样处理方案
- AngularJS:如何使用自定义指令来取代ng-repeat
- HTML前端常见攻击方式案例讲解
- 轻松使用zstd来解压缩
- React Native 学习记录
- PIE SDK 坐标系创建、定义、对比
- 基于MVC的JavaScriptWeb富应用开发
- [BZOJ4872][六省联考2017]分手是祝愿(期望DP)
- 月薪3万Java优秀简历模板
- Java项目开发管理工具-Maven基础
- 1.27(Bomb Game)
- 关于华为和荣耀手机升级鸿蒙系统之后无法连接magicbook多屏协同的问题
- linux 常用文本处理工具
- 无线测量APP开发总结
- 在使用123作为rand matlab,西安电子科技大学MATLAB考试试卷
- icmp type code 对应表
- Seam - 无缝集成 JSF,第 2 部分: 借助 Seam 进行对话
- Java 8 stream的记录
热门文章
- mysql if 多个,mysql多个if语句
- linux sticky,session_sticky命令
- PyQt4转PyQt5心得
- 6.18上午CVPR直播 | 清华三维视觉研究团队:三维人体重建与渲染、高精度人脸生成
- 偏流角为什么是arcsin(w/V)
- stm32头文件学习之Core_cm3.c(h)
- Inception(盗梦空间)及代码实现
- 批量修改后缀名和添加后缀名
- c语言进行数据统计分析的研究报告,【干货分享】CCTS:临床试验统计分析计划及统计分析报告...
- 求两个圆公切线的模板