开发路线图¶
🎯 项目愿景¶
打造一个**企业级、开箱即用、功能完善**的认证授权微服务,成为Java生态中最易用的认证授权解决方案。
📅 版本规划¶
v0.1.0 - MVP版本 (第1-2周)¶
目标: 实现最小可用产品,验证核心功能
核心功能¶
- 项目架构搭建
- 数据库设计与初始化
- 用户基础CRUD
- 密码加密存储(BCrypt)
- 简单的用户名密码登录
- JWT Token生成与验证
- 基础的接口保护
技术实现¶
// 核心类结构
auth-core/
├── entity/
│ ├── User.java
│ └── ...
├── mapper/
│ ├── UserMapper.java
│ └── ...
├── service/
│ ├── UserService.java
│ └── AuthService.java
├── controller/
│ ├── AuthController.java
│ └── UserController.java
└── security/
├── JwtTokenProvider.java
└── JwtAuthenticationFilter.java
验收标准¶
- ✅ 用户可以注册、登录
- ✅ 登录后获得JWT Token
- ✅ 携带Token可以访问受保护接口
- ✅ Token验证失败返回401
v0.2.0 - 权限体系 (第3-4周)¶
目标: 实现完整的RBAC权限体系
核心功能¶
- 角色管理(CRUD)
- 权限管理(CRUD)
- 用户-角色关联
- 角色-权限关联
- 权限验证拦截器
-
@RequirePermission注解 -
@RequireRole注解
技术实现¶
// 权限验证注解
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface RequirePermission {
String[] value();
Logical logical() default Logical.AND;
}
// 权限拦截器
@Component
public class PermissionInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response,
Object handler) {
// 权限验证逻辑
}
}
验收标准¶
- ✅ 可以创建角色和权限
- ✅ 可以为用户分配角色
- ✅ 可以为角色分配权限
- ✅ 注解式权限验证生效
- ✅ 权限不足返回403
v0.3.0 - 缓存与性能 (第5周)¶
目标: 引入Redis缓存,优化性能
核心功能¶
- Redis集成
- 用户信息缓存
- 权限信息缓存
- Token黑名单(登出)
- 在线用户管理
- 登录失败计数与锁定
技术实现¶
// Redis缓存服务
@Service
public class UserCacheService {
@Cacheable(value = "user", key = "#userId")
public User getUserById(Long userId) {
return userMapper.selectById(userId);
}
@CacheEvict(value = "user", key = "#user.id")
public void updateUser(User user) {
userMapper.updateById(user);
}
}
// 在线用户管理
@Service
public class OnlineUserService {
public void online(String token, UserInfo user) {
redisTemplate.opsForValue().set(
"online:user:" + user.getUserId(),
user,
30,
TimeUnit.MINUTES
);
}
}
验收标准¶
- ✅ Redis成功集成
- ✅ 用户信息从缓存读取
- ✅ 权限验证使用缓存
- ✅ 登出时Token加入黑名单
- ✅ 登录失败5次锁定15分钟
v0.4.0 - OAuth 2.0 (第6-7周)¶
目标: 实现标准OAuth 2.0协议
核心功能¶
- OAuth客户端管理
- 授权码模式
- 密码模式
- 客户端模式
- Refresh Token机制
- Scope权限范围
技术实现¶
// OAuth配置
@Configuration
@EnableAuthorizationServer
public class AuthorizationServerConfig extends AuthorizationServerConfigurerAdapter {
@Override
public void configure(ClientDetailsServiceConfigurer clients) {
clients.jdbc(dataSource);
}
@Override
public void configure(AuthorizationServerEndpointsConfigurer endpoints) {
endpoints
.tokenStore(tokenStore())
.authenticationManager(authenticationManager)
.userDetailsService(userDetailsService);
}
}
验收标准¶
- ✅ 支持授权码模式获取Token
- ✅ 支持密码模式获取Token
- ✅ 支持客户端模式获取Token
- ✅ 支持Refresh Token刷新
- ✅ Token包含正确的Scope
v0.5.0 - 多租户支持 (第8周)¶
目标: 实现多租户数据隔离
核心功能¶
- 租户管理(CRUD)
- 租户配置管理
- 租户数据隔离
- 租户ID自动注入
- MyBatis Plus租户拦截器
技术实现¶
// 租户拦截器
@Component
public class TenantInterceptor implements Interceptor {
@Override
public Object intercept(Invocation invocation) {
String tenantId = TenantContext.getTenantId();
// 自动在SQL添加 tenant_id 条件
}
}
// 租户上下文
public class TenantContext {
private static ThreadLocal<String> tenantId = new ThreadLocal<>();
public static void setTenantId(String id) {
tenantId.set(id);
}
}
验收标准¶
- ✅ 可以创建和管理租户
- ✅ 数据库查询自动添加租户条件
- ✅ 不同租户数据完全隔离
- ✅ 请求自动识别租户ID
v0.6.0 - SDK开发 (第9-10周)¶
目标: 开发Spring Boot Starter SDK
核心功能¶
- auto-configuration自动配置
- 配置属性类
- 拦截器自动注册
- 注解自动扫描
- UserContext线程上下文
- Feign集成
技术实现¶
// 自动配置类
@Configuration
@ConditionalOnClass(AuthClient.class)
@EnableConfigurationProperties(AuthProperties.class)
public class AuthAutoConfiguration {
@Bean
@ConditionalOnMissingBean
public AuthClient authClient(AuthProperties properties) {
return new AuthClient(properties);
}
@Bean
public AuthInterceptor authInterceptor() {
return new AuthInterceptor();
}
}
// spring.factories
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
cn.zhangziming.auth.autoconfigure.AuthAutoConfiguration
验收标准¶
- ✅ 引入依赖自动配置生效
- ✅ 注解式权限验证可用
- ✅ UserContext可以获取当前用户
- ✅ Feign调用自动传递Token
- ✅ 提供完整的使用文档
v0.7.0 - 安全增强 (第11周)¶
目标: 增强安全特性
核心功能¶
- 图形验证码
- 短信验证码
- IP白名单/黑名单
- 密码强度策略
- 密码过期策略
- 二次验证
- 安全审计日志
技术实现¶
// 验证码服务
@Service
public class CaptchaService {
public CaptchaVO generateCaptcha() {
String code = RandomUtil.randomNumbers(4);
String key = UUID.randomUUID().toString();
// 保存到Redis
redisTemplate.opsForValue().set(
"captcha:" + key,
code,
5,
TimeUnit.MINUTES
);
// 生成图片
BufferedImage image = createImage(code);
return new CaptchaVO(key, imageToBase64(image));
}
}
验收标准¶
- ✅ 登录需要验证码
- ✅ IP限制生效
- ✅ 弱密码无法设置
- ✅ 90天未改密码强制修改
- ✅ 敏感操作需要二次验证
v0.8.0 - 日志与监控 (第12周)¶
目标: 完善日志和监控体系
核心功能¶
- 登录日志记录
- 操作日志记录
- 异常日志记录
- 日志查询接口
- Spring Boot Actuator
- Prometheus指标导出
- 在线用户监控
技术实现¶
// 日志切面
@Aspect
@Component
public class LogAspect {
@Around("@annotation(operationLog)")
public Object around(ProceedingJoinPoint point, OperationLog operationLog) {
// 记录操作日志
LogRecord log = new LogRecord();
log.setOperation(operationLog.value());
log.setUserId(UserContext.getUserId());
log.setStartTime(System.currentTimeMillis());
try {
Object result = point.proceed();
log.setStatus(1);
return result;
} catch (Exception e) {
log.setStatus(0);
log.setErrorMsg(e.getMessage());
throw e;
} finally {
log.setExecuteTime(System.currentTimeMillis() - log.getStartTime());
logService.saveAsync(log);
}
}
}
验收标准¶
- ✅ 登录成功/失败有日志
- ✅ 敏感操作有日志
- ✅ 异常有完整堆栈
- ✅ 日志可以查询和导出
- ✅ Prometheus可以采集指标
v0.9.0 - 第三方登录 (第13周)¶
目标: 支持第三方登录
核心功能¶
- 微信登录
- 企业微信登录
- 钉钉登录
- GitHub登录
- 第三方账号绑定
- 统一账号体系
技术实现¶
// 第三方登录抽象
public interface ThirdPartyAuthProvider {
String getAuthorizeUrl(String state);
ThirdPartyUser getUserInfo(String code);
User bindOrRegister(ThirdPartyUser thirdPartyUser);
}
// 微信登录实现
@Service
public class WeChatAuthProvider implements ThirdPartyAuthProvider {
@Override
public String getAuthorizeUrl(String state) {
return String.format(
"https://open.weixin.qq.com/connect/oauth2/authorize?appid=%s&redirect_uri=%s&state=%s",
appId, redirectUri, state
);
}
}
验收标准¶
- ✅ 可以通过微信登录
- ✅ 可以绑定微信账号
- ✅ 第三方用户信息正确同步
- ✅ 支持多种第三方登录
v1.0.0 - 正式版本 (第14-15周)¶
目标: 完善功能,发布正式版
工作内容¶
- 代码重构与优化
- 单元测试覆盖率 > 80%
- 集成测试
- 性能测试与优化
- 文档完善
- Docker镜像发布
- Maven中央仓库发布
验收标准¶
- ✅ 所有核心功能完成
- ✅ 测试覆盖率达标
- ✅ 性能测试通过
- ✅ 文档齐全
- ✅ 可以通过Maven引用
🚀 未来规划¶
v1.1.0 - 数据权限¶
- 数据权限注解
- 部门数据权限
- 自定义数据权限
- SQL动态拼接
v1.2.0 - 管理后台¶
- Vue 3前端框架
- 用户管理界面
- 角色权限配置界面
- 菜单管理界面
- 在线用户管理
- 日志查询界面
v1.3.0 - 工作流集成¶
- Flowable集成
- 审批流程
- 权限审批
- 流程监控
v2.0.0 - 架构升级¶
- 微服务拆分
- Spring Cloud Alibaba
- 服务注册发现
- 配置中心
- 链路追踪
- 分布式事务
🤝 贡献指南¶
如何贡献¶
我们欢迎任何形式的贡献:
- 报告Bug: 在GitHub Issues中提交
- 建议功能: 在GitHub Discussions中讨论
- 提交代码: 通过Pull Request
- 完善文档: 修复文档错误或补充说明
- 分享经验: 编写使用教程或案例
代码规范¶
Java代码规范¶
- 遵循阿里巴巴Java开发手册
- 使用Google Java Style
- 类名使用大驼峰命名
- 方法名使用小驼峰命名
- 常量使用全大写+下划线
Git提交规范¶
Type类型:
- feat: 新功能
- fix: Bug修复
- docs: 文档更新
- style: 代码格式化
- refactor: 重构
- test: 测试相关
- chore: 构建/工具相关
示例:
分支策略¶
main: 主分支,生产环境代码develop: 开发分支,最新开发代码feature/*: 功能分支bugfix/*: Bug修复分支release/*: 发布分支
Pull Request流程¶
- Fork仓库
- 创建功能分支
- 提交代码
- 推送到Fork仓库
- 创建Pull Request
- 等待Review
- 合并到develop分支
代码Review标准¶
- ✅ 代码符合规范
- ✅ 有适当的注释
- ✅ 有单元测试
- ✅ 测试通过
- ✅ 无明显性能问题
- ✅ 文档已更新
📊 项目指标¶
当前进度¶
总体进度: ▓▓░░░░░░░░ 20%
v0.1.0 MVP版本 ▓▓▓▓▓▓░░░░ 60%
v0.2.0 权限体系 ░░░░░░░░░░ 0%
v0.3.0 缓存与性能 ░░░░░░░░░░ 0%
v0.4.0 OAuth 2.0 ░░░░░░░░░░ 0%
v0.5.0 多租户支持 ░░░░░░░░░░ 0%
v0.6.0 SDK开发 ░░░░░░░░░░ 0%
v0.7.0 安全增强 ░░░░░░░░░░ 0%
v0.8.0 日志与监控 ░░░░░░░░░░ 0%
v0.9.0 第三方登录 ░░░░░░░░░░ 0%
v1.0.0 正式版本 ░░░░░░░░░░ 0%
质量指标(目标)¶
| 指标 | 目标 | 当前 |
|---|---|---|
| 单元测试覆盖率 | > 80% | 0% |
| 集成测试覆盖率 | > 60% | 0% |
| 代码质量评分 | > 90 | - |
| 性能(QPS) | > 10000 | - |
| 响应时间(P99) | < 100ms | - |
📞 联系我们¶
- 项目主页: https://github.com/your-repo
- 文档网站: https://docs.your-domain.com
- 技术交流群: [点击加入]
- Email: dev@example.com
让我们一起打造最好用的认证授权微服务! 🚀
欢迎Star ⭐ 和贡献代码!