Sign inSign up

javawiki/spring-security-demo

By javawiki

Updated 4 days ago

Spring Security demo project -> https://github.com/netbuffer/spring-security-demo

Image
Security
Languages & frameworks
Developer tools
0

93

javawiki/spring-security-demo repository overview

spring-security-demo

https://github.com/netbuffer/spring-security-demo

Spring Security 核心概念与多认证模式演示工程


👥 测试账号

用户名密码具备权限/角色说明
adminadminadmin管理员账号,拥有 /admin 及细粒度 read 权限
testtesttest普通测试账号,拥有 /test 权限

密码即用户名自身,在内存中完成 DelegatingPasswordEncoder 加密与校验。


🚀 快速启动与功能测试

1. 运行项目
mvn spring-boot:run

默认服务端口:18000

2. 核心端点

📚 权限控制与方法安全注解

@PreAuthorize("hasAuthority('admin')")              // 方法调用前鉴权
@PostAuthorize("returnObject.owner == principal.username") // 方法调用后对象归属校验
@PreAuthorize("hasPermission('target-id', 'read')") // 自定义 PermissionEvaluator 细粒度权限校验
@Secured("ROLE_USER")                              // 角色级别鉴权
@PreFilter / @PostFilter                           // 集合入参及返回值过滤

🛠️ 测试与设计资源

  • HTTP Client 脚本:根目录 http/ 下提供了完整的 IntelliJ IDEA .http 测试套件(涵盖公开放行、表单登录、JSON登录、Token认证、方法鉴权、CSRF 防护、退出等),可直接批量运行。
  • 架构时序图:根目录 docs/ 下提供了过滤器链、认证流程、鉴权流程及类关系的 PlantUML 设计图。

📖 参考文档


📦 CI/CD 与 Docker 镜像

.github/workflows/build.yml 定义 4 个 Job:

Job触发条件职责
buildpush (master/main/v*) + PRDragonwell JDK 21 编译与测试,上传 target/spring-security-demo.jar 为 artifact(保留 30 天)
releasetag v*由 artifact 创建 GitHub Release,自动生成 release notes
docker-ghcrtag v*多架构(linux/amd64 + linux/arm64)构建并推送到 GitHub Container Registry(ghcr.io),打 :<VERSION>:latest
docker-hubtag v*多架构(linux/amd64 + linux/arm64)构建并推送到 Docker Hub(javawiki/spring-security-demo),打 :<VERSION>:latest
仓库 Secrets 配置

在 GitHub 仓库 Settings → Secrets and variables → Actions 中配置:

Secret必填说明
DOCKERHUB_USERNAMEDocker Hub 用户名(如 javawiki
DOCKERHUB_TOKENDocker Hub Access Token,从 hub.docker.com/settings/security 生成,需 Read & Write 权限
GITHUB_TOKEN-GitHub Actions 自动注入,无需手动创建,由 workflow 的 permissions: packages: write 自动赋权

Tag summary

Content type

Image

Digest

sha256:7c191d61c

Size

279.9 MB

Last updated

4 days ago

docker pull javawiki/spring-security-demo