/rest-boot

无状态REST WEB原型项目

Primary LanguageJava

rest-boot

无状态REST WEB原型项目

特性

  • 使用Spring Boot 2
  • 使用RBAC权限系统设计
  • 使用JWT做无状态权限系统认证
  • 因为现有的主流安全框架为支持有状态服务,比较复杂且重,故没有使用框架,但对整个权限认证流程做了抽象,方便维护与扩展
  • 支持配置文件配置CORS跨域
  • 已配置全局异常处理。建议在处理请求有异常时抛出HttpException,这样会响应异常HTTP状态码,而不是无论什么情况都以200状态码响应Msg对象
  • 使用MyBatis作为ORM框架

权限系统主要处理流程

  • 1 用户访问系统
  • 2 系统判断请求是否被权限系统跟踪?
    • 2.1 被跟踪: 进入认证阶段; 创建认证信息/Authentication(至少包含凭证)
    • 2.2 认证器/Authenticator认证信息进行认证/authenticate,产生新的(完整的)认证信息?
      • 2.2.1 认证通过: 将认证信息添加到权限上下文/AuthContext
      • 2.2.2 进入访问控制(授权)阶段; 访问控制拦截器/AccessInterceptor对访问拦截
      • 2.2.3 访问控制拦截器执行前置处理/beforeAccess,判断是否有权访问?
        • 2.2.3.1 有权访问: 执行访问
        • 2.2.3.2 无权访问: 返回无权访问异常
      • 2.2.4 访问控制器执行后置处理/afterAccess
      • 2.2.5 认证不通过: 返回未通过认证异常
    • 2.3 不被跟踪: 执行访问
  • 3 清理权限上下文

TODO

  • 集成Swagger2作为API文档生成框架
  • 使用缓存提升应用性能