pig 权限管理开源项目学习
pig 源码 https://github.com/pig-mesh/pig
文档在其中,前端在文档中,官方视频教学也在文档中有。
第一次搭建,建议直接去看单体视频,照着做即可。
文章目录
- 项目结构
- Maven 多模块项目
- pig-boot 启动核心模块
- pig-auth 实现认证和授权
- pig-gateway API 网关
- Nacos
- pig-upms 核心业务
- 项目交互细节
- 验证码
项目结构
这是典型的 Spring Boot 微服务项目
- auth : authentication 身份验证
- common 公共的、通用的
- gateway 网关
- upms : user permission management system 用户权限管理系统
- visual : visualization 可视化
- pom : project object model , Maven的项目对象模型
Maven 多模块项目
聚合项目(Aggregator Project)指的是一个 父项目(Parent POM),它不包含实际代码,只是统一管理多个子模块(Submodule)
pig/pom.xml 聚合
明确聚合的子模块:
<modules>
<module>pig-register</module>
<module>pig-gateway</module>
<module>pig-auth</module>
<module>pig-upms</module>
<module>pig-common</module>
<module>pig-visual</module>
</modules>
<dependencyManagement>
统一管理依赖版本
pluginManagement
统一插件版本
profiles
支持不同构建环境
这里就对应 idea 右边 maven 里的 profiles
<!-- -->
<profiles>
<profile> <!-- 代表一个特定的构建配置集合 -->
<id>cloud</id> <!-- 唯一标识符 -->
<properties> <!-- 定义一组属性 -->
<!-- 环境标识,需要与配置文件的名称相对应 -->
<profiles.active>dev</profiles.active> <!-- 当前激活的环境为 dev -->
<!-- 设置 Nacos 注册中心的用户名和密码 -->
<nacos.username>nacos</nacos.username>
<nacos.password>nacos</nacos.password>
</properties>
<activation>
<!-- 默认环境 -->
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>boot</id>
<modules> <!-- 激活时要包含的模块 -->
<module>pig-boot</module>
</modules>
</profile>
pig-boot 启动核心模块
SpringBootApplication 注解是
@Configuration // ※ 使 spring boot 默认扫描其上级和同级的子包
@EnableAutoConfiguration
@ComponentScan
的组合。
项目结构是一个 多模块 Maven 工程
pig/pom.xml中,已经把子模块都聚合进来了(见上文):
而 @ComponentScan 默认就是从 com.pig.boot 扫描其“上级和同级的子包” (这里是 com.pig4cloud.pig )
因此只要它们的包路径是 com.pig 开头,Spring Boot 默认就能扫描到!
pig-auth 实现认证和授权
使用了 Spring Security 和 OAuth2
pig-gateway API 网关
一般用的是 Spring Cloud Gateway
路由配置 resources/application.yml:
配置了服务器端口,而网关信息由 Nacos 读入
.yaml 文件,一种数据序列化格式
阅读提示:
下面的 server: port: 等价于 server.port
server:
port: 9999 # 服务器端口号
spring:
application:
name: @artifactId@ # 应用名称,会被替换为pig/pom.xml的同名标记
cloud:
nacos:
username: @nacos.username@
password: @nacos.password@
discovery:
server-addr: ${NACOS_HOST:pig-register}:${NACOS_PORT:8848} # 配置 Nacos 服务发现的服务器地址
watch:
enabled: true # 启用服务发现的监听
watch-delay: 1000 # 监听的延迟时间ms
config: # 配置 Nacos 作为配置中心的服务器地址
server-addr: ${spring.cloud.nacos.discovery.server-addr} # . 即 :
config:
import: ## Spring 应用从 Nacos 配置中心导入配置文件 ##
- optional:nacos:application-@profiles.active@.yml
- optional:nacos:${spring.application.name}-@profiles.active@.yml
Nacos
Naming and Configuration Service
一个服务发现和配置管理的平台
- 集中管理微服务的配置信息,无需重启应用即可使配置生效
- 允许微服务在 Nacos 中进行注册,其他服务可以通过 Nacos 发现并获取到这些已注册服务的实例信息,从而实现服务间的调用。
pig-upms 核心业务
- Controller :对外提供接口
- Service :封装具体业务逻辑
- Mapper :与数据库交互
项目交互细节
验证码
Request URL:
http://localhost:8888/api/admin/code/image?randomStr=477ba151-80ab-43cf-b70b-a5077dd4f919
Request Method:
GET
Status Code:
200 OK
通过路径找到对应代码: