# vinus-spring-boot-starter
**Repository Path**: beerstack/vinus-spring-boot-starter
## Basic Information
- **Project Name**: vinus-spring-boot-starter
- **Description**: 针对阿里云的产品进行的spring boot starter 的封装,目前只封装了captcha、sms、oss、sts三个模块
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 29
- **Created**: 2023-10-08
- **Last Updated**: 2023-10-08
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 针对阿里云组件封装的一个神奇starter: vinus-spring-boot-starter
## TODO 新增了日志处理相关的,最近忙没时间写文档……后面更新
#### 2019-12-09更新
1. 添加人机验证模块(captcha),主要用于阿里云数据风控(业务安全)模块的后台pc端配置,详情请看:[阿里云人机验证说明文档](https://help.aliyun.com/product/28308.html)
2. 版本号升级为0.4.1
#### 介绍
针对阿里云的产品进行的spring boot starter的封装,目前只封装了afs(人机验证,captcha)、sms(短信验证)、oss(对象存储)、sts(访问控制)四个模块,后续有需求我会进一步的添加,对于我来说sms与oss两个模块目前用的最多。所以这块也做了一些封装
#### 软件架构
###### 版本需求
当前工程版本:0.4.1






###### 系统配置
* 系统配置是按照“你需要什么就配置什么”的原则来进行相关配置,所以对于不同的模块就需要不同的配置:所以对于配置,目前分为四大块:captcha配置,oss配置,sms配置,sts配置
* 所有配置基本上都会包含三个数据:1、accessKeyId 2、accessKey Secret 3、regionId(选填),以上的三个数据是每个可编程访问模块所必须的数据,这三项数据由阿里云的访问控制中创建子账号进行提供的,对于访问控制请看:[访问控制](https://help.aliyun.com/document_detail/28627.html?spm=a2c8b.12215325.0.0.211e62539G4AH2)
* captchaafs配置主要包括:appKey应用秘钥、scene验证类型
* oss配置主要包括:默认的bucket、endpoint、oss代理过期时间、bucket与域名绑定的映射4项
* sms配置主要包括:endpoint、sms的产品类型(目前定死为Dysmsapi)、短信发送的域名(目前定死dysmsapi.aliyuncs.com)
* sts配置主要包括:阿里云资源与角色对照信息、角色会话名称、临时授权的过期时间
#### 安装教程
1. 下载此工程,通过``mvn intall``后,引入其依赖:
```
com.kuding
vinus-spring-boot-starter
0.4.1
```
2. 在``appplication.properties``或``application.yml``文件中进行相关配置
3. 加入captcha人机验证模块,则需要做如下配置:
```
vinus.enable-aliyun-captcha=true
aliyun.captcha.access-key-id=你自己的accessId
aliyun.captcha.secret=你自己的access-secret
aliyun.captcha.region-id=cn-hangzhou
aliyun.captcha.app-key=你自己的appKey
aliyun.captcha.sene=登录验证方式方式
```
4. 加入需要引入短信模块,则需要做如下配置:
```
vinus.enable-aliyun-sms=true
aliyun.sms.access-key-id=你自己的accessId
aliyun.sms.secret=你自己的access-secret
aliyun.sms.region-id=cn-hangzhou
```
5. 若需要引入oss模块,则需要引入如下配置:
```
vinus.enable-aliyun-oss=true
aliyun.oss.access-key-id=你自己的accessId
aliyun.oss.secret=你自己的access-secret
aliyun.oss.default-bucket=my-bucket
aliyun.oss.policy-timeout=30m
aliyun.oss.end-point=oss-cn-xxx.aliyuncs.com
```
6. sts模块暂时先不讲了,有机会再说
#### 使用说明
对于应用也非常的简单,核心的类为XxxComonent。阿里云的afs(captcha)的核心类为AliCaptchaComponent、阿里云sms的核心类为SmsComponent、阿里云oss的核心类为OssComponent、阿里云Sts核心类为StsComponent;
* 对于captcha(afs)组件,核心方法为``public boolean check(HttpServletRequest httpServletRequest, CaptchaContent capcha)``方法,通过httpservletrequest来进行处理请求的相关信息,CaptchaContent是用于验证的一些关键参数,目前只支持pcweb端的验证。对于人机验证的相关的文档请参看:[https://help.aliyun.com/product/28308.html](https://help.aliyun.com/product/28308.html)
* 对于sms组件,核心的方法为``public void doSendSms(String phone, String smsSignature, String templateCode, Map map)``方法,参数依次为:手机号、短信签名、短信模板code、和参数(map结构);对于短信签名一般都是固定的,对于templateCode的管理建议可以通过enum的方式进行管理
```
public enum SmsTemplate {
MODIFY_PWD("SMS_120270002"), CREATE_USER("SMS_172223677"), RESET_PWD("SMS_162524221"), INIT_SAAS("SMS_162546827");;
private final String template;
public String getTemplate() {
return template;
}
private SmsTemplate(String template) {
this.template = template;
}
}
```
* ossComponent对于我而言是最常用的组件,所以对于oss的封装也是最全面的。对于大部分情况而言,oss上传需要web端进行直传,所以需要服务端进行获取一个临时授权策略给web端,web端可以通过授权策略记性web端直传,具体流程可以查看阿里云官方文档:[https://help.aliyun.com/document_detail/112718.html](https://help.aliyun.com/document_detail/112718.html?spm=a2c4g.11186623.6.1381.3de849e8wssfWB)
临时授权策略需要的信息已封装到类中:``OssPolicy``,用法也很简单:
```
@PostMapping("/createExplainPicPolicy")
@ApiOperation("创建一个说明图片上传的临时策略")
public ResultModel createExplainPicPolicy() {
OssPolicy ossPolicy = ossComponent.createOssPolicy("文件目录", "my-bucket");
return ResponseStatusEnum.SUCCESS.createResultModel(ossPolicy);
}
```
第一个参数表示是哪个文件目录,第二个参数表示是哪个bucket
* 当然对于oss,有一些情况是需要服务端进行上传信息的,这一部分非常的灵活,oss不仅可以上传文件,还可以上传任何形式的文本(json、xml、html等)假如你上传的是json,通过oss获取也是标准的restful风格的接口的话,支付要在Oss配置需要的header(例如content-type)即可,如:
```
/**
* 将一个字符串上传到oss
*
* @param object
* @param contentType
* @param path
* @return
*/
public String putStringToOss(String object, ContentType contentType, String path)
```
#### 说在后面
* 这个框架也比较简单,思想上主要是把阿里云的组件进行模块化开发,这样的好处就是方便与其他的框架(spring cloud)整合并方便配合阿里云控制台进行管理。我在这也算是抛砖引玉,对于有阿里云其他模块开发的需求,可以留言给我,我看看如何进行添加。
* 最近比较忙,此框架的文档我也会不定期的进行完善。
[](https://gitee.com/ITEater/vinus-spring-boot-starter)