# auth-login-starter **Repository Path**: Ji_Agang/auth-login-starter ## Basic Information - **Project Name**: auth-login-starter - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 3 - **Created**: 2026-05-12 - **Last Updated**: 2026-05-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Auth Login Starter 一个可复用的 Spring Boot 登录 starter 示例,第一版聚焦: - `/auth/login` - `/auth/refresh` - JWT access token - JWT refresh token - 业务系统自定义 `AuthUserLoader` - 默认 BCrypt 密码比对 - 业务系统可覆盖 `PasswordMatcher` ## 模块说明 - `auth-login-core`: 认证抽象、登录流程、扩展点接口 - `auth-login-spring-boot-autoconfigure`: 自动配置、JWT、过滤器、默认接口 - `auth-login-spring-boot-starter`: 对外给业务系统引入的 starter - `auth-login-demo`: 示例业务系统 ## 通用逻辑在哪 登录主流程在 starter 内部,不需要业务系统自己实现 `LoginService`: - `DefaultLoginService` - `JwtTokenService` 固定流程是: 1. starter 接收 `/auth/login` 2. 调用 `AuthUserLoader` 查询业务用户 3. 调用 `PasswordMatcher` 校验密码 4. 调用 `UserStatusChecker` 校验账号状态 5. starter 内部生成 accessToken / refreshToken 6. 返回统一 `LoginResponse` 业务系统正常只需要实现这些扩展点: - `AuthUserLoader`:查询你自己的用户 - `PasswordMatcher`:可选,默认不写就是 BCrypt - `LoginPreChecker`:可选,验证码、租户校验 - `LoginSuccessHandler` / `LoginFailureHandler`:可选,审计日志 如果业务系统自己实现 `LoginService`,那就是接管整条登录流程,starter 的通用模板能力就绕开了。 ## 两种 demo 模式 `auth-login-demo` 里放了两种最典型的接入方式。 ### 1. 默认 BCrypt 模式 配置: ```yaml demo: auth: mode: bcrypt ``` 这里只实现 `AuthUserLoader`,不实现 `PasswordMatcher`。 starter 会自动使用默认的 `BCryptPasswordMatcher`。 示例账号: - 用户名:`admin` - 密码:`123456` ### 2. 自定义密码比对模式 配置: ```yaml demo: auth: mode: custom ``` 这时业务系统会额外覆盖一个 `PasswordMatcher` Bean,演示老系统常见的 `md5 + salt` 密码校验。 示例账号: - 用户名:`legacy-admin` - 密码:`123456` ## Demo 使用 启动: ```bash mvn -pl auth-login-demo spring-boot:run ``` 默认 BCrypt 模式登录: ```bash curl -X POST http://localhost:8088/auth/login \ -H "Content-Type: application/json" \ -d '{"username":"admin","password":"123456"}' ``` 自定义密码比对模式登录: 先把 `application.yml` 里的 `demo.auth.mode` 改成 `custom`,然后执行: ```bash curl -X POST http://localhost:8088/auth/login \ -H "Content-Type: application/json" \ -d '{"username":"legacy-admin","password":"123456"}' ``` 拿 accessToken 调当前用户: ```bash curl http://localhost:8088/me \ -H "Authorization: Bearer " ```