Snapper Snapper
首页
文档
  • 权限演示 (opens new window)
  • 工作流演示 (opens new window)
问答
更新日志
gitee (opens new window)
首页
文档
  • 权限演示 (opens new window)
  • 工作流演示 (opens new window)
问答
更新日志
gitee (opens new window)
  • 介绍及配置

    • 项目介绍
    • 微服务版项目配置
    • 单机版项目配置
      • 项目集成
      • 内存模式配置
      • 打印日志
      • 系统上下文
      • 统一返回
      • 异常处理
      • 登录鉴权
      • 属性配置
      • config配置文件清单
        • MvcConfigurer 配置
        • SecurityConfiguration 安全配置
        • WrapFilterConfiguration 配置
    • 项目开发
    • 权限使用
  • 功能使用

    • 用户管理
    • 用户组管理
    • 角色管理
    • 组织架构
    • 职位管理
    • 授权管理
  • 集成使用
  • 介绍及配置
frog
2025-06-28
目录

单机版项目配置原创

# 项目集成

本章介绍单机版权限 (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过滤器
微服务版项目配置
项目开发

← 微服务版项目配置 项目开发→

Theme by Vdoing | Copyright © 2023-2025
Frog

鲁ICP备2023023334号-1

鲁公网安备 37021302001133号

  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式