单机版项目配置原创
# 项目集成
本章介绍单机版权限 (opens new window)项目配置,主要步骤如下:
注意
项目请使用 maven 3.6.x版本构建!
- 创建数据库
snapper,导入SQL 脚本snapper-x.y.z.sql(x.y.z为版本号) - 下载依赖项目snapper-dependence (opens new window),执行
mvn clean install - 下载snapper-standalone (opens new window)单机版项目
- 修改项目下的envs/env-dev.properties(默认的生效配置文件在pom.xml中)的数据库信息 缓存信息,具体参考属性配置
- 启动项目 打开SnapperServerBootstrap调试模式启动
- 下载snam (opens new window),配置proxy.js
dev: {
'/authority/': {
target: 'http://127.0.0.1:8090/',
changeOrigin: true,
pathRewrite: {
'authority': ''
}
}
}
- 打开浏览器访问 http://localhost:8000, 输入用户名密码 ximen/123456
# 内存模式配置
为减少依赖,单机版项目支持基于内存caffeine模式的缓存,可在env-dev.properties中配置snapper.cache.mode=caffeine来实现
# 打印日志
- 业务日志 @ULog,在Controller方法上添加 @ULog(建议只添加持久化方法)以支持业务日志,业务日志会异步的方式添加到数据库中,可在UI中的日志管理查看,请设置bootstrap.yml中的
snapper.ulog=true - 系统日志 调试模式下,可查看控制台日志,请设置env-dev.properties中的
snapper.log.level日志级别及snapper.log.impl实现类,其中StdOutImpl为控制台打印日志,LogbackLoggerImpl会打印日志到日志文件,具体参考snapper-denpendence中的snapper-log-starter中的logback-base.xml
# 系统上下文
在访问Controller时前系统会注入上下文信息,上下文信息包含如下:
- 请求上下文 该请求的信息,具体参考
RequestContext,包含当前请求的IP URL 浏览器 操作系统等信息 - 用户上下文 当前用户信息,具体参考
UserContext,也是权限系统的关键,包含当前用户的用户名 组织 系统端 用户Tag 角色等信息,可以MbaseController及服务层ContextServiceImpl获取
# 统一返回
系统集成了统一返回处理,返回结果格式为:
{code:200,message:'ok',data:[{}]}
具体参考com.baomibing.web.common.R.class,在env-dev.properties中配置snapper.wrap.package=com.xxx包名,包名下的返回会自动封装统一返回结果.
统一返回结果有以下规则:
- private方法不进行统一返回结果封装
- @NotWrap注解的方法不进行统一返回结果封装
- 不在
snapper.wrap.package配置的包下的Controller方法不进行统一返回结果封装 - 返回
com.baomibing.web.common.R.class的结果不进行统一返回结果封装 - 返回
ModelAndView的结果不进行统一返回结果封装
# 异常处理
系统提供了统一的异常处理, 异常处理后会被封装为统一返回进行结果返回(参考com.baomibing.security.exception.AuthorityWebExceptionHandler),code不为200,自定义异常处理按照如下步骤:
- 自定义异常枚举类实现
ExceptionEnumable接口,该接口提供了国际化异常处理支持 - 在自定义的异常枚举中定义异常,参考的例子为
CLASS_NAME_DUPLICATE(30002, "商品分类名称{0}重复,无法进行后续操作!"),30002为异常码,后面为异常内容,其中{0}为占位符 - 抛异常时按照如下格式
throw new ServerRuntimeException(WmsExceptionEnum.CLASS_NAME_DUPLICATE, v.getClassName())
# 登录鉴权
系统登录鉴权基于Spring Security实现,具体如下:
- 每个登录用户必须指定"端",即登录设备,根据用户的配置从而判断用户是否支持该设备
- 业务系统可能存在一个用户位于多个组织的情形,对于业务端,登录时需要指定组织(如果登录用户有多个组织,只有一个组织,默认会选择该组织)
- 系统提供验证码支持,具体请参考
com.baomibing.authority.controlle.ASystemController实现方法Boolean validateCaptcha(String captcha)方法 - 登录支持多人同时登录和单一登录,具体可在用户管理中配置
- token登录拥有过期策略,策略包含固定时间(从登录开始到固定的时间后过期)和最后一次访问(从最后一次调用后台开始到固定时间后过期),具体可在用户管理中配置
具体登录鉴权过程如下:
完整的登录鉴权 认证过程如下:

# 属性配置

# config配置文件清单
本段介绍config文件下的配置文件信息(只介绍系统特有的),具体配置文件清单如下:
# MvcConfigurer 配置
| 属性 | 说明 |
|---|---|
| ContextHandlerInterceptor | Controller拦截器,用于拦截Controller注入User上下文对象,及用于支持@ULog注解 上下文信息 |
| ReturnHandlerAdvice | 同意返回拦截器,用于统一返回结果 |
| AuthorityWebExceptionHandler | 异常处理拦截器,用于统一异常处理 |
| AuthorityWebMvcConfigurer | 配置拦截器 |
# SecurityConfiguration 安全配置
| 属性 | 说明 |
|---|---|
| CommonJwtAuthenticationFilter | Jwt登录认证过滤器 |
| JwtAuthorizationFilter | Jwt鉴权过滤器 |
| CommonBlackFilter | 黑名单过滤器 |
| RateLimitFilter | 流量控制过滤器 |
| ThirdPartAuthenticationFilter | 自定义第三方鉴权过滤器 |
| CommonCrosFilter | 跨域拦截器 |
| SystemService | 系统登录实现类 |
| AuthorizationCacheWarmUpRunner | 系统启动缓存预热 |
# WrapFilterConfiguration 配置
| 属性 | 说明 |
|---|---|
| multiRequestFilter | 是否开启多请求过滤器,防止每个请求只能读取一次参数 |
| XssFilter | XSS过滤器 |
Last Updated: 2025/07/19, 08:29:29
