net.cofcool.chaos:chaos-server-security-spring

Chaos Web Server

License

License

Categories

Categories

Net Security
GroupId

GroupId

net.cofcool.chaos
ArtifactId

ArtifactId

chaos-server-security-spring
Last Version

Last Version

0.5.1
Release Date

Release Date

Type

Type

jar
Description

Description

Chaos Web Server

Download chaos-server-security-spring

How to add to project

<!-- https://jarcasting.com/artifacts/net.cofcool.chaos/chaos-server-security-spring/ -->
<dependency>
    <groupId>net.cofcool.chaos</groupId>
    <artifactId>chaos-server-security-spring</artifactId>
    <version>0.5.1</version>
</dependency>
// https://jarcasting.com/artifacts/net.cofcool.chaos/chaos-server-security-spring/
implementation 'net.cofcool.chaos:chaos-server-security-spring:0.5.1'
// https://jarcasting.com/artifacts/net.cofcool.chaos/chaos-server-security-spring/
implementation ("net.cofcool.chaos:chaos-server-security-spring:0.5.1")
'net.cofcool.chaos:chaos-server-security-spring:jar:0.5.1'
<dependency org="net.cofcool.chaos" name="chaos-server-security-spring" rev="0.5.1">
  <artifact name="chaos-server-security-spring" type="jar" />
</dependency>
@Grapes(
@Grab(group='net.cofcool.chaos', module='chaos-server-security-spring', version='0.5.1')
)
libraryDependencies += "net.cofcool.chaos" % "chaos-server-security-spring" % "0.5.1"
[net.cofcool.chaos/chaos-server-security-spring "0.5.1"]

Dependencies

compile (8)

Group / Artifact Type Version
net.cofcool.chaos : chaos-server-core jar 0.5.1
org.springframework.boot : spring-boot-starter-security jar 2.4.1
org.springframework.boot : spring-boot-starter-web jar 2.4.1
org.springframework.boot : spring-boot-starter-validation jar 2.4.1
org.springframework.boot : spring-boot-starter-aop jar 2.4.1
org.springframework.boot : spring-boot-configuration-processor Optional jar 2.4.1
javax.servlet : javax.servlet-api jar 4.0.0
com.google.code.findbugs : jsr305 jar 3.0.2

provided (1)

Group / Artifact Type Version
org.projectlombok : lombok jar 1.18.16

test (1)

Group / Artifact Type Version
org.springframework.boot : spring-boot-starter-test jar 2.4.1

Project Modules

There are no modules declared in this project.

Chaos Server

基于 Spring Boot 的 Java Web Server 框架, 简化开发, 封装了常见的企业级项目开发框架, 如 Mybaits, Spring Security, Shiro, JPA等。

最新版本为 maven central, Spring Boot 版本为 2.4.1, 通过maven引入

<dependency>
  <groupId>net.cofcool.chaos</groupId>
  <artifactId>chaos-server-${MODULE_NAME}</artifactId>
  <version>${VERSION}</version>
</dependency>

查看更新日志

使用可查看 示例项目

模块说明

  1. common 该模块定义了基本接口和类等
  2. core 核心实现, 包括拦截器, 国际化, JSON 解析等
  3. data-jpa JPA 相关的基础 Service 和工具类等
  4. data-mybatis Mybatis 相关的基础 Service 和工具类等
  5. extension 封装 Redis, MongoDB 等相关操作
  6. security-shiro 封装了 Shiro, 简化开发流程
  7. security-spring 封装了 Spring Security, 简化开发流程
  8. component-processor 编译时扫描 BaseComponent 注解, 该注解可标识基础组件, 避免组件调用混乱
  9. boot-starter 根据 Spring Boot 规范进行自动化配置

配置

# 是否调试模式
chaos.development.debug=false
# 项目版本
chaos.development.version=100
# 是否开启验证码
chaos.auth.using-captcha=false
# 定义扫描 Scanned 注解的路径
chaos.development.annotation-path=net.cofcool.chaos.server.demo
# 授权路径配置, 用";"分割, "Spring Security" 项目, 该配置为匿名访问路径; "Shiro" 为授权路径配置, 即"filterChainDefinitions"
chaos.auth.urls=/auth/**\=anon;/error\=anon;/**\=authc
# 登陆路径
chaos.auth.login-url=/auth/login
# 注入数据key配置, 多个时以","分隔
chaos.auth.checked-keys=id

使用

业务相关Service可继承DataAccess接口, 实现类可继承SimpleService抽象类。

使用Page类封装分页的相关数据, ORM模块的Paging继承并扩展。

  • Mybatis: 通过 Mybatis Plus 分页插件分页。
  • Jpa: 通过Pageable分页。

异常处理时, 自定义业务相关异常需继承ServiceException。如需设定异常级别, 实现ExceptionLevel接口即可, 该级别影响异常的打印。ServiceException已实现该接口, 默认为最高级别。

授权处理

封装了Apache ShiroSpring Security, 应用可依赖security-shiro模块或security-spring模块来实现授权管理。

login

AuthService类定义了登录等操作, 应用不需要实现该类, 只需引用该组件即可, 登录由"filter"完成,因此不需要主动调用该方法。

UserAuthorizationService定义应用操作, 应用需实现该类。

PasswordProcessor定义密码处理操作, 应用需实现该类。

User存储用户信息。

spring-security 配置时注意 chaos.auth.cors-enabledchaos.auth.csrf-enabled 配置项。

Service 层

DataAccess定义"Service"常用的方法。

Result封装运行结果,提供两个子接口,QueryResult封装查询结果,其它情况由ExecuteResult处理。

抽象类SimpleService实现DataAccess类,实现query方法,简化分页操作,定义queryWithPage方法,用于分页查询。通过ExceptionCodeManager描述执行状态错误码等。JPA 应用的"Service"可继承SimpleJpaService

Controller 层

默认提供三种"Controller(使用Scanned注解)"代理类:

  • 注入用户数据到请求参数中, 即数据隔离,实现类为ApiProcessingInterceptor
  • 请求日志打印,实现类为LoggingInterceptor
  • 参数校验,实现类为ValidateInterceptor
1. Json解析

ResponseBodyMessageConverter支持把Result, Number, String, Result.ResultState等对象转为Message对象,即可保证接口返回的数据统一为Message规定的格式(), 应用可调用Message.of()方法创建实例。

异常处理

默认处理异常类型

GlobalHandlerExceptionResolver处理在请求中发生的异常,包括如下异常:

  • ServiceException
  • NullPointerException, IndexOutOfBoundsException, NoSuchElementException
  • HttpMessageNotReadableException
  • UnsupportedOperationException
  • MethodArgumentNotValidException
  • DataAccessException

除以上异常外,其它异常由 Spring 的DefaultHandlerExceptionResolver处理。

把异常信息包装为Message对象,保证发生异常时的响应格式符合接口规范。

注意:当运行在Debug模式时,会优先调用DefaultHandlerExceptionResolver处理异常。

描述信息

应用中的描述信息统一由 ExceptionCodeManager 处理。ExceptionCodeDescriptor 封装了描述信息,默认提供了两种类型:

  • SimpleExceptionCodeDescriptor
  • ResourceExceptionCodeDescriptor

SimpleExceptionCodeDescriptor为默认配置,包含了常见的描述代码和描述信息,例如操作成功,操作失败等。

ResourceExceptionCodeDescriptor 从"messages"文件中读取配置的描述信息。

Versions

Version
0.5.1
0.5.0
0.4.1
0.4.0
0.3.2
0.3.1
0.3.0
0.2.0