diff --git a/dev-protocol-springcloud/dev-protocol-springcloud-project-authority-center/doc/dev_protocol_springcloud_project_dev-protocol-springcloud_1.0.0.html b/dev-protocol-springcloud/dev-protocol-springcloud-project-authority-center/doc/dev_protocol_springcloud_project_dev-protocol-springcloud_1.0.0.html
new file mode 100644
index 0000000..f205b07
--- /dev/null
+++ b/dev-protocol-springcloud/dev-protocol-springcloud-project-authority-center/doc/dev_protocol_springcloud_project_dev-protocol-springcloud_1.0.0.html
@@ -0,0 +1 @@
+
数据库设计文档数据库设计文档
数据库名:dev_protocol_springcloud_project
文档版本:1.0.0
文档描述:dev-protocol-springcloud
返回目录表名:t_dev_protocol_cloud_user 说明:用户表
数据列:
序号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | id | bigint | 19 | 0 | N | Y | | 自增主键 |
2 | username | varchar | 64 | 0 | N | N | | 用户名 |
3 | password | varchar | 256 | 0 | N | N | | MD5 加密之后的密码 |
4 | extra_info | varchar | 1024 | 0 | N | N | | 额外的信息 |
5 | create_time | datetime | 26 | 0 | N | N | 0000-01-01 00:00:00 | 创建时间 |
6 | update_time | datetime | 26 | 0 | N | N | 0000-01-01 00:00:00 | 更新时间 |
\ No newline at end of file
diff --git a/dev-protocol-springcloud/dev-protocol-springcloud-project-authority-center/pom.xml b/dev-protocol-springcloud/dev-protocol-springcloud-project-authority-center/pom.xml
index f8c7596..0d0a3a0 100644
--- a/dev-protocol-springcloud/dev-protocol-springcloud-project-authority-center/pom.xml
+++ b/dev-protocol-springcloud/dev-protocol-springcloud-project-authority-center/pom.xml
@@ -72,6 +72,24 @@
screw-core
1.0.3
+
+
+ io.jsonwebtoken
+ jjwt-api
+ 0.10.5
+
+
+ io.jsonwebtoken
+ jjwt-impl
+ 0.10.5
+ runtime
+
+
+ io.jsonwebtoken
+ jjwt-jackson
+ 0.10.5
+ runtime
+
KV
+ // jwt payload --> KV (用户数据)
.claim(CommonConstant.JWT_USER_INFO_KEY, JSON.toJSONString(loginUserInfo))
- // jwt id
+ // jwt id (标识, 没什么作用)
.setId(UUID.randomUUID().toString())
// jwt 过期时间
.setExpiration(expireDate)
// jwt 签名 --> 加密
-// .signWith(getPrivateKey(), SignatureAlgorithm.RS256)
+ .signWith(SignatureAlgorithm.RS256, getPrivateKey())
.compact();
}
diff --git a/dev-protocol-springcloud/dev-protocol-springcloud-project-authority-center/src/main/resources/http/authority.http b/dev-protocol-springcloud/dev-protocol-springcloud-project-authority-center/src/main/resources/http/authority.http
index cea788e..230e2ad 100644
--- a/dev-protocol-springcloud/dev-protocol-springcloud-project-authority-center/src/main/resources/http/authority.http
+++ b/dev-protocol-springcloud/dev-protocol-springcloud-project-authority-center/src/main/resources/http/authority.http
@@ -1,18 +1,18 @@
### 获取 Token -- 登录功能实现
-POST http://127.0.0.1:7000/ecommerce-authority-center/authority/token
+POST http://127.0.0.1:7000/dev-protocol-springcloud-project-authority-center/authority/token
Content-Type: application/json
{
- "username": "Qinyi02@imooc.com",
+ "username": "q@bbbbbbyyyyyy.com",
"password": "25d55ad283aa400af464c76d713c07ad"
}
### 注册用户并返回 Token -- 注册功能实现
-POST http://127.0.0.1:7000/ecommerce-authority-center/authority/register
+POST http://127.0.0.1:7000/dev-protocol-springcloud-project-authority-center/authority/register
Content-Type: application/json
{
- "username": "ImoocQinyiImooc@imooc.com",
+ "username": "qccc@11.com",
"password": "25d55ad283aa400af464c76d713c07ad"
}
diff --git a/dev-protocol-springcloud/dev-protocol-springcloud-project-authority-center/src/test/java/org/example/DBDocTest.java b/dev-protocol-springcloud/dev-protocol-springcloud-project-authority-center/src/test/java/org/example/DBDocTest.java
new file mode 100644
index 0000000..2d90a36
--- /dev/null
+++ b/dev-protocol-springcloud/dev-protocol-springcloud-project-authority-center/src/test/java/org/example/DBDocTest.java
@@ -0,0 +1,86 @@
+package org.example;
+
+import cn.smallbun.screw.core.Configuration;
+import cn.smallbun.screw.core.engine.EngineConfig;
+import cn.smallbun.screw.core.engine.EngineFileType;
+import cn.smallbun.screw.core.engine.EngineTemplateType;
+import cn.smallbun.screw.core.execute.DocumentationExecute;
+import cn.smallbun.screw.core.process.ProcessConfig;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.context.ApplicationContext;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import javax.sql.DataSource;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+/**
+ * 数据库表文档生成
+ * */
+@SpringBootTest
+@RunWith(SpringRunner.class)
+public class DBDocTest {
+
+ @Autowired
+ private ApplicationContext applicationContext;
+
+ @Test
+ public void buildDBDoc() {
+
+ DataSource dataSourceMysql = applicationContext.getBean(DataSource.class);
+
+ // 生成文件配置
+ EngineConfig engineConfig = EngineConfig.builder()
+ // 生成文件路径
+ .fileOutputDir("C:\\Users\\Administrator\\Desktop\\study_pro\\dev-protocol\\dev-protocol-springcloud\\dev-protocol-springcloud-project-authority-center\\doc")
+ // 打开目录
+ .openOutputDir(false)
+ // 文件类型
+ .fileType(EngineFileType.HTML)
+ .produceType(EngineTemplateType.freemarker).build();
+
+ // 生成文档配置, 包含自定义版本号、描述等等
+ // 数据库名_description_version.html
+ Configuration config = Configuration.builder()
+ .version("1.0.0")
+ .description("dev-protocol-springcloud")
+ .dataSource(dataSourceMysql)
+ .engineConfig(engineConfig)
+ .produceConfig(getProduceConfig())
+ .build();
+
+ // 执行生成
+ new DocumentationExecute(config).execute();
+ }
+
+ /**
+ * 配置想要生成的数据表和想要忽略的数据表
+ * */
+ private ProcessConfig getProduceConfig() {
+
+ // 想要忽略的数据表
+ List ignoreTableName = Collections.singletonList("undo_log");
+ // 忽略表前缀, 忽略 a、b 开头的数据库表
+ List ignorePrefix = Arrays.asList("a", "b");
+ // 忽略表后缀
+ List ignoreSuffix = Arrays.asList("_test", "_Test");
+
+ return ProcessConfig.builder()
+ // 根据名称指定表生成
+ .designatedTableName(Collections.emptyList())
+ // 根据表前缀生成
+ .designatedTablePrefix(Collections.emptyList())
+ // 根据表后缀生成
+ .designatedTableSuffix(Collections.emptyList())
+ // 忽略表
+ .ignoreTableName(ignoreTableName)
+ // 按照前缀忽略
+ .ignoreTablePrefix(ignorePrefix)
+ // 按照后缀忽略
+ .ignoreTableSuffix(ignoreSuffix)
+ .build();
+ }
+}
diff --git a/dev-protocol-springcloud/dev-protocol-springcloud-project-authority-center/src/test/java/org/example/service/JWTServiceTest.java b/dev-protocol-springcloud/dev-protocol-springcloud-project-authority-center/src/test/java/org/example/service/JWTServiceTest.java
new file mode 100644
index 0000000..6129811
--- /dev/null
+++ b/dev-protocol-springcloud/dev-protocol-springcloud-project-authority-center/src/test/java/org/example/service/JWTServiceTest.java
@@ -0,0 +1,38 @@
+package org.example.service;
+
+import com.alibaba.fastjson.JSON;
+import lombok.extern.slf4j.Slf4j;
+import org.example.utils.TokenParseUtils;
+import org.example.vo.LoginUserInfo;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+/**
+ * JWT 相关服务测试类
+ * */
+@Slf4j
+@SpringBootTest
+@RunWith(SpringRunner.class)
+public class JWTServiceTest {
+
+ @Autowired
+ private IJWTService ijwtService;
+
+ @Test
+ public void testGenerateAndParseToken() throws Exception {
+
+ // 生成 token 返回给客户端
+ String jwtToken = ijwtService.generateToken(
+ "q@bbbbbbyyyyyy.com",
+ "25d55ad283aa400af464c76d713c07ad"
+ );
+ log.info("jwt token is: [{}]", jwtToken);
+
+ // 客户端带 token 返回给我们的系统, 系统通过鉴权工具类解析, 得到用户信息
+ LoginUserInfo userInfo = TokenParseUtils.parseUserInfoFromToken(jwtToken);
+ log.info("parse token: [{}]", JSON.toJSONString(userInfo));
+ }
+}
\ No newline at end of file
diff --git a/dev-protocol-springcloud/dev-protocol-springcloud-project-authority-center/电商-授权鉴权服务.md b/dev-protocol-springcloud/dev-protocol-springcloud-project-authority-center/电商-授权鉴权服务.md
index 7c3e020..46e57b2 100644
--- a/dev-protocol-springcloud/dev-protocol-springcloud-project-authority-center/电商-授权鉴权服务.md
+++ b/dev-protocol-springcloud/dev-protocol-springcloud-project-authority-center/电商-授权鉴权服务.md
@@ -26,9 +26,12 @@
## 生成 RSA256 公钥和私钥对
- [RSATest.java]
- 一般是放在服务器上, 用的时候拉取下来使用
-
## 基于 JWT + RSA256 的授权
-
+- 查看代码实现即可
## 验证服务可用性
+- Test 验证 Service 功能可用性
+- http 脚本验证 对外接口是否可用
+## 授权、鉴权中心微服务总结
-## 授权、鉴权中心微服务总结
\ No newline at end of file
+- 生成数据库 文档
+ - [DBDocTest.java]
\ No newline at end of file
diff --git a/dev-protocol-springcloud/dev-protocol-springcloud-project-common/src/main/java/org/example/utils/TokenParseUtils.java b/dev-protocol-springcloud/dev-protocol-springcloud-project-common/src/main/java/org/example/utils/TokenParseUtils.java
index 289a345..ee5aaa7 100644
--- a/dev-protocol-springcloud/dev-protocol-springcloud-project-common/src/main/java/org/example/utils/TokenParseUtils.java
+++ b/dev-protocol-springcloud/dev-protocol-springcloud-project-common/src/main/java/org/example/utils/TokenParseUtils.java
@@ -20,6 +20,9 @@ import java.util.Calendar;
*/
public class TokenParseUtils {
+ private TokenParseUtils() {
+ }
+
/**
* 从 JWT Token 中解析 LoginUserInfo 对象
*/