当前位置:网站首页>基于APISIX的basic-auth插件对Minio文件上传功能进行授权
基于APISIX的basic-auth插件对Minio文件上传功能进行授权
2022-07-23 12:52:00 【Ning静致远】

目录
简介
通过实例对APISIX的授权应用进行理解,环境搭建如下:
APISIX网关部署在192.168.9.5虚拟机上;
Minio服务部署在192.168.9.8虚拟机上;
对Minio进行操作的java服务运行在192.168.9.1宿主机上;
实现
Java上传服务代码
@PostMapping("/upload")
public String upload(@RequestParam(name = "file", required = false)
MultipartFile[] file) {
if (file == null || file.length == 0) {
return "上传文件不能为空";
}
List<String> orgfileNameList = new ArrayList<>(file.length);
for (MultipartFile multipartFile : file) {
String orgfileName = multipartFile.getOriginalFilename();
orgfileNameList.add(orgfileName);
try {
InputStream in = multipartFile.getInputStream();
minioClient.putObject(
PutObjectArgs.builder().bucket(bucketName).object(orgfileName).stream(
in, multipartFile.getSize(), -1)
.contentType(multipartFile.getContentType())
.build());
in.close();
} catch (Exception e) {
return "上传失败";
}
}
Map<String, Object> data = new HashMap<String, Object>();
data.put("bucketName", bucketName);
data.put("fileName", orgfileNameList);
return "上传成功"+data;
}
APISIX授权配置
在APISIX服务所在主机上通过命令进行配置,如下:
# 创建consumer
curl http://192.168.9.5:9080/apisix/admin/consumers -H 'X-API-KEY:abcdefghabcdefgh' -X PUT -d ' { "username": "admin", "plugins": { "basic-auth": { "username": "admin", "password":"admin123456" } } }'
# 创建路由
curl http://192.168.9.5:9080/apisix/admin/routes/2 -H 'X-API-KEY:abcdefghabcdefgh' -X PUT -d ' { "methods": ["POST"], "uri": "/upload", "plugins": { "basic-auth": {} }, "upstream": { "type": "roundrobin", "nodes": { "192.168.9.1:8080": 1 }, "pass_host":"pass" } }'
验证
通过postmen工具对upload方法进行验证,
输入Authorization信息,如下:
输入接口参数,如下:
以上两步配置好之后,点击Send按钮,进行发送,返回上传成功信息。进入minio控制台查看结果:
表明,文件上传成功,APISIX授权正确!
结论
通过这个例子,加深对APISIX授权的理解。具体,Springboot整合Minio文件系统的程序,后续补充,不是本章重点!
边栏推荐
- Circuit structure and output mode of GPIO port of 32-bit single chip microcomputer
- 聊一聊JVM的内存布局
- Redis key has no expiration time set. Why was it actively deleted
- LeetCode之等式方程的可满足性
- mysql多表查询之_笛卡尔乘积_内连接_隐式连接
- nport串口服务器原理,MOXA串口服务器NPORT-5130详细配置
- VMware platform STS certificate expired
- USB基础
- pytest接口自动化测试框架 | pytest生成简单测试报告
- 大端模式和小端模式的记忆方法
猜你喜欢

Flutter 组件的生命周期、State 管理及局部重绘 | 开发者说·DTalk

Fastadmin, non super administrator, has been granted batch update permission, but it still shows no permission

Calendar calendar class

FreeRTOS个人笔记-挂起/解挂任务

20220722挨揍记录

自定义一个对象
![[suctf 2018]multisql (MySQL precompiled)](/img/ae/501b7f9c6d8259c3c799e4ff0b568b.png)
[suctf 2018]multisql (MySQL precompiled)

UiPath Studio Enterprise 22.4 Crack

ICML 2022 | sparse double decline: can network pruning also aggravate model overfitting?

Dynamic programming knapsack problem 01 knapsack explanation
随机推荐
AWS 6 AWS IOT
pytest接口自动化测试框架 | 汇总
[suctf 2018]multisql (MySQL precompiled)
UiPath Studio Enterprise 22.4 Crack
【Error】TypeError: expected str, bytes or os.PathLike object, not int
【TensorFlow】检测TensorFlow GPU是否可用
ts封装localstorage类,存储信息
【C语言】结构体、枚举和联合体
Convert.Calss file to.Jar idea
Introduction to Huawei's new version of datacom certification
牛客-TOP101-BM35
MySQL soul 16 ask, how many questions can you hold on to?
pytest接口自动化测试框架 | 控制测试用例执行
fastadmin,非超级管理员,已赋予批量更新权限,仍显示无权限
MySQL multi table query_ Cartesian product_ Inner connection_ Implicit connection
go run,go build,go install有什么不同
《STM32MP1 M4裸机CubeIDE开发指南》第六章 STM32Cube固件包
PgSQL mistakenly deletes PG_ Wal file, service startup failed
Go interface: go deep into internal principles
mysql多表查询之_笛卡尔乘积_内连接_隐式连接