开源是一项有乐趣的事情。目前开源的项目有:
- facecto-code-base-starter
- facecto-code-token-starter
- facecto-code-safe-starter
- facecto-code-base-utils
- facecto-code-base-excel
进行中的有:
- facecto-code-core-anypay
- rhinos
- rhinos cloud
facecto-code-base-starter 标准响应和异常封装
使用方式
maven引用如下
<dependency>
<groupId>com.facecto.code</groupId>
<artifactId>facecto-code-base-starter</artifactId>
<version>1.1.0</version>
</dependency>
使用
import com.facecto.code.base.CodeResult
Codresult.ok("")
facecto-code-token-starter 通用token组件
使用方式
maven引用如下
<dependency>
<groupId>com.facecto.code</groupId>
<artifactId>facecto-code-token-starter</artifactId>
<version>1.0.0</version>
</dependency>
配置application.yaml
app:
safe:
token-key: 字符串格式 Token Key
token-name: true|false. Token 名称
secret: 字符串格式,Token加密串,例如:"3d15d32654bc1af61759a3bacbc0c78a"
expire: 数字格式,Token过期时间(秒)
创建shiro配置类
import com.facecto.code.token.AuthFilter;
import org.apache.shiro.mgt.SecurityManager;
import org.springframework.context.annotation.Bean;
import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
import org.springframework.context.annotation.Configuration;
import javax.servlet.Filter;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
@Configuration
public class ShiroConfig {
@Bean("shiroFilter")
public ShiroFilterFactoryBean shiroFilter(SecurityManager securityManager) {
ShiroFilterFactoryBean shiroFilter = new ShiroFilterFactoryBean();
shiroFilter.setSecurityManager(securityManager);
Map<String, Filter> filters = new HashMap<>();
filters.put("oauth2", new AuthFilter());
shiroFilter.setFilters(filters);
Map<String, String> filterMap = new LinkedHashMap<>();
filterMap.put("/login", "anon");
filterMap.put("/**", "oauth2");
shiroFilter.setFilterChainDefinitionMap(filterMap);
return shiroFilter;
}
}
添加扫描路径
@ComponentScans({
@ComponentScan(basePackages = {
"com.facecto.code"
})
})
@EnableConfigurationProperties(TokenProperties.class)
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class,args);
}
}
注意
需要redis
这个组件使用redis来访问相关的授权信息。Redis必须在SpringBoot项目中引入。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
示例
app.token.key的默认值是 “adm-token”。 简单模式。如果你不使用 shiro 的授权和验证功能,你可以使用简单模式。简单模式允许你在一个项目中使用多个自定义密钥。
Token token = generateTokenSimple("app-1", userId);
facecto-code-safe-starter 安全组件
使用方式
maven引用如下
<dependency>
<groupId>com.facecto.code</groupId>
<artifactId>facecto-code-safe-starter</artifactId>
<version>1.1.0</version>
</dependency>
配置application.yaml
app:
safe:
has-rsa: true|false 布尔值
has-dynamic: true|false 布尔值
iv: "xxxx" 字符串,例如: "1234567890123456"
key: "xxxx" 字符串,例如: "01234567891234560123456789123456"
secret: "xxxx" 字符串,例如: "1829b4abbba0794301a075fc2283d2ba"
pri-key: "xxxx" 字符串,例如: "MIIEvQIBADANBgkqh...."
使用加密注解
示例:
@GetMapping(value = "/user")
@Encrypt
public CodeResult getUser(){
User u = new User()
.setEmail("ijonso123@gmail.com")
.setId(1)
.setName("JonSo");
return CodeResult.ok("OK", u);
}
示例返回值:
{
"code": 0,
"message": "OK",
"sign": "46E5FC4DF302BF74F66666C3DBC05810CCBB486B",
"data": "97XVcP9tJ7Vh7glQlc4R/SpSDKI6gWKcZHnmqfrSkpKUQmkTe4fYtw83qKgz5tTGkeMyaC9F4UmzGPqDVxa0U2A5h/jRn1eUnYvHFARky6ZWY99VFBJ3WDHYQBBZTK9P11C4a1J+Zw=="
}
使用解密注解
示例:
@PostMapping(value = "/user")
public CodeResult setUser(@RequestBody @Decrypt User u){
return CodeResult.ok("OK",u);
}
接口参数:
{
"sign": "46E5FC4DF302BF74F66666C3DBC05810CCBB486B",
"data": "97XVcP9tJ7Vh7glQlc4R/SpSDKI6gWKcZHnmqfrSkpKUQmkTe4fYtw83qKgz5tTGkeMyaC9F4UmzGPqDVxa0U2A5h/jRn1eUnYvHFARky6ZWY99VFBJ3WDHYQBBZTK9P11C4a1J+Zw=="
}
示例返回值:
{
"data": {
"id": 1,
"name": "JonSo",
"email": "ijonso123@gmail.com"
},
"code": 0,
"message": "OK",
"status": "SUCCESS"
}
facecto-code-base-utils 工具组件
使用方式
maven引用如下
<dependency>
<groupId>com.facecto.code</groupId>
<artifactId>facecto-code-base-utils</artifactId>
<version>1.1.0</version>
</dependency>
工具介绍
分布式ID
- ID生成器是基于twitter雪花的。
- 用于生成带有日期的顺序代码。
- 前8位是年、月和日期。
- 第9位是微服务代号,取值范围为0-15(显示为十六进制0-9A-F)。
- 第10位是机器代号,取值范围为0-15(以十六进制显示为0-9A-F)。
- 最后14位是序列代码。
- Example: 20211202AB10098259438592
- 从版本:1.1.0开始
Yaml配置器
- 主要是用于yaml解析
STS的token生成器
- 阿里云OSS基于STS的token生成
字符串替换工具
- 手机号脱敏
- 身份证号脱敏
Map工具类
- Map取值和转化
HTTP工具
- 获得域名等
日期工具
- 日期转化等
字符工具
- 字符串转化等
facecto-code-base-excel EXCEL工具
二次封装于EasyExcel
使用方式
maven引用如下
<dependency>
<groupId>com.facecto.code</groupId>
<artifactId>facecto-code-base-excel</artifactId
<version>1.0.0</version>
</dependency>
工具介绍
主要用于excel的格式导出。