跳转至

开发路线图

🎯 项目愿景

打造一个**企业级、开箱即用、功能完善**的认证授权微服务,成为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
  • 服务注册发现
  • 配置中心
  • 链路追踪
  • 分布式事务

🤝 贡献指南

如何贡献

我们欢迎任何形式的贡献:

  1. 报告Bug: 在GitHub Issues中提交
  2. 建议功能: 在GitHub Discussions中讨论
  3. 提交代码: 通过Pull Request
  4. 完善文档: 修复文档错误或补充说明
  5. 分享经验: 编写使用教程或案例

代码规范

Java代码规范

  • 遵循阿里巴巴Java开发手册
  • 使用Google Java Style
  • 类名使用大驼峰命名
  • 方法名使用小驼峰命名
  • 常量使用全大写+下划线

Git提交规范

<type>(<scope>): <subject>

<body>

<footer>

Type类型: - feat: 新功能 - fix: Bug修复 - docs: 文档更新 - style: 代码格式化 - refactor: 重构 - test: 测试相关 - chore: 构建/工具相关

示例:

feat(auth): 添加微信登录功能

实现了微信OAuth登录,支持网页版和移动端

Closes #123

分支策略

  • main: 主分支,生产环境代码
  • develop: 开发分支,最新开发代码
  • feature/*: 功能分支
  • bugfix/*: Bug修复分支
  • release/*: 发布分支

Pull Request流程

  1. Fork仓库
  2. 创建功能分支
    git checkout -b feature/awesome-feature
    
  3. 提交代码
    git commit -m "feat: add awesome feature"
    
  4. 推送到Fork仓库
    git push origin feature/awesome-feature
    
  5. 创建Pull Request
  6. 等待Review
  7. 合并到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 -

📞 联系我们


让我们一起打造最好用的认证授权微服务! 🚀

欢迎Star ⭐ 和贡献代码!