# zpp-springcloud-parent
**Repository Path**: junlyzhou/zpp-springcloud-parent
## Basic Information
- **Project Name**: zpp-springcloud-parent
- **Description**: springcloud微服务,集成gateway、oauth2.0、security、stream、分布式配置config、限流等
- **Primary Language**: Java
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 4
- **Created**: 2020-02-16
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# zpp-springcloud-parent
## 项目介绍
springcloud 集成 Eureka、config、gateway、oauth2.0、security、限流、监控、链路跟踪等
### 项目结构
```
zpp-springcloud-parent
doc -- 文档(数据库、lib)
zpp-springcloud-auth -- 授权模块
zpp-springcloud-common -- 公共模块
zpp-springcloud-config -- 分布式配置模块
zpp-springcloud-control -- 控制中心
zpp-springcloud-eureka -- 注册中心
zpp-springcloud-gateway -- api网关
zpp-springcloud-modules -- 业务模块
```
## 服务部署
- 创建`mysql`数据库,默认数据库名为`zpp-springcloud`,可修改数据库名,同时也要修改`zpp-springcloud-config`
中`resources/config`目录下对应的配置文件,执行目录`doc`下的sql文件
- 将`doc/lib`下对应的jar包放到本地仓库对应的目录下(没有会报错)
### 启动顺序
- EurekaApplication(注册中心)
- ConfigApplication(分布式配置)
- GatewayApplication(网关)
- AuthApplication(授权服务)
- UserApplication(用户服务)
## 分布式配置
### 加密
https://github.com/ulisesbocchio/jasypt-spring-boot
```
# input:加密参数
# password:加密秘钥
# algorithm:加密算法
java -cp jasypt-1.9.2.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="xxx" password=aaa algorithm=PBEWithMD5AndDES
输出:
----ENVIRONMENT-----------------
Runtime: Oracle Corporation Java HotSpot(TM) 64-Bit Server VM 25.60-b23
----ARGUMENTS-------------------
algorithm: PBEWithMD5AndDES
input: xxx
password: aaa
----OUTPUT----------------------
IbmvPODFXzeMDeDeaCSW8255mJA=
```
## 过滤器
### GatewayFilter与GlobalFilter
Global filters 被应用到所有的路由上。
Gateway filter将应用到单个路由上或者一个分组的路由上。
## 授权
`网关URL`:`http://127.0.0.1:8083`
### 通过手机号授权
#### 1. 发送短信验证码
详见:获取短信验证码
#### 2. 手机号短信登录
`URL`:`/auth/authentication/mobile`
`请求方式`:`POST`
`请求头`:
| 参数名 | 说明 |
| :------------- | :------------ |
|Content-Type|application/x-www-form-urlencoded|
| deviceId | 唯一Id |
`请求参数`:
| 参数名 | 说明 |
| :------------- | :------------ |
|mobile |手机号|
|smsCode |验证码|
`响应参数`:
| 参数名 | 说明 |
| :------------- | :------------ |
|access_token |访问token|
|token_type |token类型|
|refresh_token |刷新access_token的token|
|expires_in |access_token有效期,单位:s|
|scope |scope|
`返回示例`:
```
{
"access_token": "cba39daa-62f6-4334-8a0a-df26ed40a5cc",
"token_type": "bearer",
"refresh_token": "6a5d7e0f-bb49-4298-9a15-a5300430c721",
"expires_in": 1549,
"scope": "all"
}
```
### 通过用户名密码授权
#### 1. 获取图片验证码
详见:获取图片验证码
#### 2. 用户名密码登录
`URL`:`/auth/authentication/form`
`请求方式`:`POST`
`请求头`:
| 参数名 | 说明 |
| :------------- | :------------ |
|Content-Type|application/x-www-form-urlencoded|
| deviceId | 唯一Id |
`请求参数`:
| 参数名 | 说明 |
| :------------- | :------------ |
|username |用户名|
|password |密码|
|imageCode |验证码|
`响应参数`:
| 参数名 | 说明 |
| :------------- | :------------ |
|access_token |访问token|
|token_type |token类型|
|refresh_token |刷新access_token的token|
|expires_in |access_token有效期,单位:s|
|scope |scope|
`返回示例`:
```
{
"access_token": "f7b8f52c-cbca-438b-a0bb-f5f5e65655c6",
"token_type": "bearer",
"refresh_token": "627bb9c2-f13a-4779-ad28-aa6b141bbe95",
"expires_in": 3599,
"scope": "all"
}
```
### 刷新token
`URL`:`/oauth/token?grant_type=refresh_token&refresh_token=cb3b42a8-fee5-48b2-9ae0-c9353139b588`
`请求方式`:`POST`
`请求参数`:
| 参数名 | 说明 |
| :------------- | :------------ |
|grant_type |refresh_token|
|refresh_token |授权登录返回的refresh_token|
`响应参数`:
| 参数名 | 说明 |
| :------------- | :------------ |
|access_token |访问token|
|token_type |token类型|
|refresh_token |刷新access_token的token|
|expires_in |access_token有效期,单位:s|
|scope |scope|
`返回示例`:
```
{
"access_token": "12b0e567-3eb8-412e-b16e-4349bbea62e7",
"token_type": "bearer",
"refresh_token": "cb3b42a8-fee5-48b2-9ae0-c9353139b588",
"expires_in": 3599,
"scope": "all"
}
```
## 验证码
### 图片验证码
`URL`:`/code/image?width=100&height=200`
`请求方式`:`GET`
`请求头`:
| 参数名 | 说明 |
| :------------- | :------------ |
|deviceId |唯一标识图片验证码|
### 短信验证码
`URL`:`/code/sms?mobile=13000000000`
`请求方式`:`GET`
`请求头`:
| 参数名 | 说明 |
| :------------- | :------------ |
| deviceId | 唯一Id |