Appearance
Springboot项目开发相关的配置文件说明
application.yml、security.ignore、xss.ignore三个配置文件的详细配置说明
本文目录
一、application.yml配置文件
1.1 springboot常规配置
- 端口、上下文、编码格式等
yaml
#端口
server:
port: 8123
servlet:
#上下文
context-path: /
#编码格式
encoding:
enabled: true
charset: UTF-8
force: true
#编码格式
tomcat.uri-encoding: UTF-8
1.2 spring常规配置
- 上传文件限制大小
- Mysql 数据库连接配置
- Redis 连接配置
- Spring Mvc 配置
- Thymeleaf 静态文件配置
yaml
#端口
spring:
#上传文件修改限制大小
servlet.multipart:
max-request-size: 100MB
max-file-size: 10MB
#数据库配置
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
type: com.zaxxer.hikari.HikariDataSource
database.type: mysql
url: jdbc:mysql://39.107.157.91:13306/dashu_frame_open?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-8
username: dashuopen
password: dashuopen@123
#Redis配置
redis:
host: localhost
port: 6379
password:
database: 0
mvc:
# 解决swagger2冲突,导致启动报错问题(@See:https://blog.csdn.net/mapboo/article/details/121568519)
pathmatch.matching-strategy: ant_path_matcher
#thymeleaf配置
thymeleaf:
enabled: true
prefix: classpath:/static/
suffix: .html
encoding: UTF-8
cache: false
1.3 mybatis-plus常规配置
- Mybatis的xml(sql语句),扫描配置
- 实体类所在包,扫描配置
yaml
#mybatis-plus配置
mybatis-plus:
mapper-locations: classpath*:/mapper/**/*.xml
type-aliases-package: com.kg.**.entity
1.4 自定义配置(重点!!!)
- 1.4.1 文件上传配置
- 允许上传的文件格式(防止攻击类脚本文件上传)
- 允许上传的图片格式(图片格式文件,会自动压缩文件大小)
- 图片自动压缩,压缩比率
- 文件上传物理路径
- 隐藏上传路径
yaml
com.kg:
#文件上传配置
file:
#允许上传的文件格式(防止攻击类脚本文件上传,以|结尾)
allow-extend: jpg|jpeg|png|gif|bpm|mp3|mp4|doc|docx|xls|xlsx|pdf|zip|rar|txt|
#允许上传的图片格式(图片需要压缩,格式必须正确,以|结尾)
image-extend: jpg|jpeg|png|gif|bpm|
#图片自动压缩,压缩比率(0-1之间的小数,例如:0.6表示压缩为60%)
image-quality: 0.6
#文件上传物理路径(文件保存的物理绝对路径;不要使用\;若使用docker部署,要配置容器内部路径,一般是/usr/local/springboot/))
save-path: /usr/local/springboot/myupload/files
#文件路径映射(对外访问的路径,通过spring映射到物理路径;不要使用\;要在security.ignore放开)
url-pre: /upload
- 1.4.2 用户登录相关配置
- 是否单例登录(默认false,如果为true则开启单例登录,后登录的会踢出前面登录的用户)
- 登录是否需要验证码(false时,后端登录接口会自动跳过验证码判断)
- 登录token的有效期(jwtToken的过期时间,默认120分钟)
yaml
com.kg:
#登录常量配置
login:
#是否单例登录
is-only-one: false
#登录是否需要验证验证码
is-yzm: true
#jwtToken过期时限,单位:分钟
jwt-token-expiry: 120
- 1.4.3 开发管理员配置
- 把z_user表中的user_id,开发管理员的id字符串,多个开发管理员用英文逗号隔开
yaml
com.kg:
#开发管理员配置 (所有开发管理员的ids,多个用逗号隔开)
developer-user-ids: 1
在Java类LoginConstant.java中,通过@Value注解,把配置的值赋值给静态变量:DEVELOPER_USER_IDS
因此,使用 LoginConstant.DEVELOPER_USER_IDS 就是所有开发管理员的userIds
java
/**
* 配置:开发管理员userIds
*/
public static String DEVELOPER_USER_IDS;
@Value("${com.kg.developer-user-ids}")
public void setDeveloperUserIds(String userIds) {
LoginConstant.DEVELOPER_USER_IDS = userIds;
}
- 同时LoginConstant.java类还提供了:
java
/**
* 判断 userId 是否开发管理员
*
* @param userId 用户id
* @return boolean 是否开发管理员
*/
public static boolean isDeveloper(String userId) {
return (LoginConstant.DEVELOPER_USER_IDS + ",").contains(userId + ",");
}
- 1.4.4 是否允许跨域
控制本项目的所有接口,是否允许跨域访问。
yaml
com.kg:
#跨域配置,是否允许跨域:默认关闭(true开启;false关闭)
cors-enable: false
- 1.4.5 操作日志保存天数
使用@AutoOperateLog注解的接口,会自动保存操作日志。
详见文档:常用功能 - 操作日志
- 这些日志长期保存,会造成数据库表的资源浪费!因此后台增加了一个定时任务,定时清理超过指定天数的日志。
- 该配置可以设置日志保留天数,超过该天数的日志会被清理。
yaml
com.kg:
#默认操作日志,保存天数,默认:180天(定时任务自动删除旧日志)
auto-operate-log: 180
- 删除操作日志的定时任务,如下图所示:
- 1.4.6 验证码配置
- 本项目验证码使用开源项目:easy-captcha
- 可进行如下配置:(注释很全,不再详细说明)
yaml
com.kg:
#验证码配置
captcha:
#类型枚举 ARITHMETIC-算数;CHINESE-中文;CHINESE_GIF-中文闪图;GIF-闪图;SPEC-常规
type: ARITHMETIC
#有效期 分钟
expiration: 10
#内容长度
length: 4
#图片宽高
width: 163
height: 49
#字体样式
font-family: Default
font-size: 20
#0正常、1加粗、2斜体
font-style: 0
- 1.4.7 Swagger配置
- Swagger的使用,详见文档:常用功能 - Swagger使用
- Swagger相关配置,可进行如下配置:
yaml
com.kg:
#swagger相关配置
swagger:
enable: true
title: "大树快速开发平台API"
description: "基于swagger的Api接口信息"
terms-of-service-url: "http://docs.java119.cn"
version: "1.0.0"
concat:
name: "ziro"
www: "http://docs.java119.cn"
email: "877185959@qq.com"
说明
- com.kg.swagger.enable = true 配置swagger是否开启
- 默认开启。部署到生产环境时,建议关闭
- 1.4.8 Oauth2 配置
Oauth 2.0 的使用,详见文档:
常用功能 - Oauth2使用
Oauth2 服务端配置:
- 是否开启 Oauth2 服务,默认开启
yaml
com.kg:
#oauth2配置
oauth2:
#服务端,是否启动(true/false)
server.enable: true
Oauth2 客户端配置:
yaml
com.kg:
#oauth2配置
oauth2:
#客户端信息配置(作为Oauth2的客户端,集成第三方Oauth2统一认证登录时使用)
client:
clientId: dev
clientSecret: qwer@123
#回调地址
redirectUri: http://localhost:8123/oauth2/client/login/code
#第三方Oauth2服务端地址
oauthServerUri: http://localhost:8123/
#回调登录错误时,跳转前端错误页
errorRouter: http://localhost:9527/#/oauth2/error
#回调登录成功时,跳转前端成功页(处理本系统登录逻辑)
successRouter: http://localhost:9527/#/oauth2/success
- 1.4.9 微信小程序配置
说明
- 微信小程序,自动登录(获取用户openid)时使用
- 微信小程序,扫码跳转小程序页面时使用
- 微信小程序相关配置如下:
yaml
com.kg:
#微信配置
weixin:
#小程序配置(其中accessTokenUrl、jsCodeUrl、qrCodeUrl如需自定义,在此处配置即可覆盖默认值)
applet:
appId: xxxxx
secret: xxxxx
- 1.4.10 微信支付配置
说明
- 微信商户号支付配置
- 区分 v2 和 v3 的不同密钥版本
- 对应代码在 module\src\main\java\com\kg\component\pay\wechat 文件夹
- 包含功能:
NATIVE - 扫码支付、H5 - 移动端浏览器(非微信客户端),调起微信H5支付、JSAPI - 微信客户端内,调起微信支付、 支付回调、查询支付结果、退款、查询退款结果
- 微信商户号支付相关配置如下:
yaml
com.kg:
#微信配置
weixin:
#微信支付(商户号)配置(WxPayConfig.java)
pay:
#微信绑定的公众号appId
#商户号只能绑定:已通过微信认证的服务号、政府或媒体类订阅号、小程序、企业微信、移动应用、网站应用
appId: xxxxx
#商户号mchId
mchId: xxxxx
#当前密钥版本(v2/v3)
keyVersion: v2
#商户号v2密钥
partnerKey: xxxxx
#证书p12地址(v2退款时需要)
certP12Path: pems/apiclient_cert.p12
#商户号v3密钥
partnerKeyV3: xxxxx
#证书pem地址(v3时需要)
certPath: pems/apiclient_cert.pem
#私钥pem地址(v3时需要)
keyPath: pems/apiclient_key.pem
#支付结果通知地址(后台接口地址:http://www.xxxx.com/api/)
notifyUrl: http://www.xxxx.com/api/pay/wechat/payNotify
- 1.4.11 支付宝支付配置
说明
- 支付宝商户支付配置
- 对应代码在 module\src\main\java\com\kg\component\pay\alipay 文件夹
- 包含功能: 扫码支付(当面付)、PC网站支付(跳转到支付宝界面)、移动网站支付(跳转到支付宝页面)、支付通知、 查询支付结果、查询退款结果(所有支付类型的退款查询接口都是一样的)
- 支付宝支付相关配置如下:
yaml
com.kg:
#支付宝支付配置
alipay:
#应用id
appId: xxxxx
#支付宝私钥
privateKey: xxxxx
#支付宝的公钥(注意:非应用公钥)
aliPayPublicKey: xxxxx
#支付结果通知地址(后台接口地址:http://www.xxxx.com/api/)
notifyUrl: http://www.xxxx.com/api/pay/alipay/payNotify
#支付返回地址
returnUrl: http://www.xxxx.com/api/pay/alipay/returnUrl
- 1.4.12 阿里云短信配置
- 集成阿里云短信,相关配置如下:
yaml
com.kg:
#短信通知相关配置
sms:
aliyun:
accessKeyId: xxxxx
accessKeySecret: xxxxx
endpoint: dysmsapi.aliyuncs.com
sign: 短信签名xxxxx
- 在 管理后台 - DEMO - 短信-demo 中,有一个发短信的demo模块:
目前只集成了:阿里云短信
- 发送阿里云短信
- 注意:短信发送前,需要在阿里云备案短信模板
备案好的短信模板,在数据字典处维护,即可在 短信-demo 模块使用了
1.5 项目输出日志配置
说明
- 输出日志配置,代码如下
- 日志级别,详细级别依次是 trace/debug/info/warn/error
yaml
#输出日志配置(日志级别:trace/debug/info/warn/error)
logging.level:
root: info
com.kg: info
二、security.ignore配置文件
默认所有后端资源(接口/静态资源等/Servlet等)都会经过 Spring Security 的过滤器拦截,进行统一的权限判断。
如果想跳过权限判断(如:登录接口、验证码接口等)
则通过该配置文件配置 security 的忽略列表。
- 配置文件:security.ignore
yaml
# 1.支持用#注释,
# 2.支持用**模糊匹配
# 登录登出接口
/login/login
/login/logout
# 验证码
/captcha/get
# 验证码
/captcha/get
三、xss.ignore配置文件
默认所有后端接口,都会经过 XSS攻击 过滤器拦截,处理xss攻击代码,保障系统安全。
如果想跳过 Xss 过滤
则通过该配置文件配置 xss 拦截过滤器忽略列表。
- 配置文件:xss.ignore
yaml
# 1.支持用#注释,
# 2.支持用**模糊匹配
# 忽略列表(全部忽略:/**)
# 表单代码生成器
/generator/code/byform
# 上传附件相关链接
/upload/**
# 关于富文本接口的说明
# 1. 富文本内容,默认会被编译,如:<p>1</p>会被编译为<p>1</p>
# 2. 解决方法1(建议):保存时编译存数据库,查询时用XssFormatUtil.toHtml()方法反编译(DEMO见/news/news/list第97行)
# 3. 解决方法2(不建议):在本文件配置忽略列表,如下一行去掉#就是忽略/news/news/add接口,忽略后该接口传递的任何数据都不编译
#/news/news/add