Commit 91ada76f authored by liyang's avatar liyang

refactor: 优化配置和代码结构

- 更新前端环境配置
- 简化用户管理页面代码
- 优化CommonController上传接口
- 删除application-druid.yml,合并到环境配置
- 简化application.yml主配置
- 更新日志配置
parent ca5af736
...@@ -4,5 +4,5 @@ VUE_APP_TITLE = STS门户网站管理系统 ...@@ -4,5 +4,5 @@ VUE_APP_TITLE = STS门户网站管理系统
# 生产环境配置 # 生产环境配置
ENV = 'production' ENV = 'production'
# STS门户网站管理系统/生产环境 # 若依门户系统/生产环境
VUE_APP_BASE_API = '/prod-api' VUE_APP_BASE_API = 'http://101.126.159.207:8081'
...@@ -2,19 +2,8 @@ ...@@ -2,19 +2,8 @@
<div class="app-container"> <div class="app-container">
<el-row :gutter="20"> <el-row :gutter="20">
<splitpanes :horizontal="this.$store.getters.device === 'mobile'" class="default-theme"> <splitpanes :horizontal="this.$store.getters.device === 'mobile'" class="default-theme">
<!--部门数据-->
<pane size="16">
<el-col>
<div class="head-container">
<el-input v-model="deptName" placeholder="请输入部门名称" clearable size="small" prefix-icon="el-icon-search" style="margin-bottom: 20px" />
</div>
<div class="head-container">
<el-tree :data="deptOptions" :props="defaultProps" :expand-on-click-node="false" :filter-node-method="filterNode" ref="tree" node-key="id" default-expand-all highlight-current @node-click="handleNodeClick" />
</div>
</el-col>
</pane>
<!--用户数据--> <!--用户数据-->
<pane size="84"> <pane size="100">
<el-col> <el-col>
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="用户名称" prop="userName"> <el-form-item label="用户名称" prop="userName">
...@@ -61,7 +50,6 @@ ...@@ -61,7 +50,6 @@
<el-table-column label="用户编号" align="center" key="userId" prop="userId" v-if="columns.userId.visible" /> <el-table-column label="用户编号" align="center" key="userId" prop="userId" v-if="columns.userId.visible" />
<el-table-column label="用户名称" align="center" key="userName" prop="userName" v-if="columns.userName.visible" :show-overflow-tooltip="true" /> <el-table-column label="用户名称" align="center" key="userName" prop="userName" v-if="columns.userName.visible" :show-overflow-tooltip="true" />
<el-table-column label="用户昵称" align="center" key="nickName" prop="nickName" v-if="columns.nickName.visible" :show-overflow-tooltip="true" /> <el-table-column label="用户昵称" align="center" key="nickName" prop="nickName" v-if="columns.nickName.visible" :show-overflow-tooltip="true" />
<el-table-column label="部门" align="center" key="deptName" prop="dept.deptName" v-if="columns.deptName.visible" :show-overflow-tooltip="true" />
<el-table-column label="手机号码" align="center" key="phonenumber" prop="phonenumber" v-if="columns.phonenumber.visible" width="120" /> <el-table-column label="手机号码" align="center" key="phonenumber" prop="phonenumber" v-if="columns.phonenumber.visible" width="120" />
<el-table-column label="状态" align="center" key="status" v-if="columns.status.visible"> <el-table-column label="状态" align="center" key="status" v-if="columns.status.visible">
<template slot-scope="scope"> <template slot-scope="scope">
...@@ -103,23 +91,11 @@ ...@@ -103,23 +91,11 @@
<el-input v-model="form.nickName" placeholder="请输入用户昵称" maxlength="30" /> <el-input v-model="form.nickName" placeholder="请输入用户昵称" maxlength="30" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12">
<el-form-item label="归属部门" prop="deptId">
<treeselect v-model="form.deptId" :options="enabledDeptOptions" :show-count="true" placeholder="请选择归属部门" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="手机号码" prop="phonenumber"> <el-form-item label="手机号码" prop="phonenumber">
<el-input v-model="form.phonenumber" placeholder="请输入手机号码" maxlength="11" /> <el-input v-model="form.phonenumber" placeholder="请输入手机号码" maxlength="11" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12">
<el-form-item label="邮箱" prop="email">
<el-input v-model="form.email" placeholder="请输入邮箱" maxlength="50" />
</el-form-item>
</el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
...@@ -150,13 +126,6 @@ ...@@ -150,13 +126,6 @@
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="12">
<el-form-item label="岗位">
<el-select v-model="form.postIds" multiple placeholder="请选择岗位">
<el-option v-for="item in postOptions" :key="item.postId" :label="item.postName" :value="item.postId" :disabled="item.status == 1" ></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="角色"> <el-form-item label="角色">
<el-select v-model="form.roleIds" multiple placeholder="请选择角色"> <el-select v-model="form.roleIds" multiple placeholder="请选择角色">
...@@ -164,9 +133,7 @@ ...@@ -164,9 +133,7 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> <el-col :span="12">
<el-row>
<el-col :span="24">
<el-form-item label="备注"> <el-form-item label="备注">
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容"></el-input> <el-input v-model="form.remark" type="textarea" placeholder="请输入内容"></el-input>
</el-form-item> </el-form-item>
...@@ -201,17 +168,15 @@ ...@@ -201,17 +168,15 @@
</template> </template>
<script> <script>
import { listUser, getUser, delUser, addUser, updateUser, resetUserPwd, changeUserStatus, deptTreeSelect } from "@/api/system/user" import { listUser, getUser, delUser, addUser, updateUser, resetUserPwd, changeUserStatus } from "@/api/system/user"
import { getToken } from "@/utils/auth" import { getToken } from "@/utils/auth"
import Treeselect from "@riophae/vue-treeselect"
import "@riophae/vue-treeselect/dist/vue-treeselect.css"
import { Splitpanes, Pane } from "splitpanes" import { Splitpanes, Pane } from "splitpanes"
import "splitpanes/dist/splitpanes.css" import "splitpanes/dist/splitpanes.css"
export default { export default {
name: "User", name: "User",
dicts: ['sys_normal_disable', 'sys_user_sex'], dicts: ['sys_normal_disable', 'sys_user_sex'],
components: { Treeselect, Splitpanes, Pane }, components: { Splitpanes, Pane },
data() { data() {
return { return {
// 遮罩层 // 遮罩层
...@@ -230,20 +195,12 @@ export default { ...@@ -230,20 +195,12 @@ export default {
userList: null, userList: null,
// 弹出层标题 // 弹出层标题
title: "", title: "",
// 所有部门树选项
deptOptions: undefined,
// 过滤掉已禁用部门树选项
enabledDeptOptions: undefined,
// 是否显示弹出层 // 是否显示弹出层
open: false, open: false,
// 部门名称
deptName: undefined,
// 默认密码 // 默认密码
initPassword: undefined, initPassword: undefined,
// 日期范围 // 日期范围
dateRange: [], dateRange: [],
// 岗位选项
postOptions: [],
// 角色选项 // 角色选项
roleOptions: [], roleOptions: [],
// 表单参数 // 表单参数
...@@ -273,15 +230,13 @@ export default { ...@@ -273,15 +230,13 @@ export default {
pageSize: 10, pageSize: 10,
userName: undefined, userName: undefined,
phonenumber: undefined, phonenumber: undefined,
status: undefined, status: undefined
deptId: undefined
}, },
// 列信息 // 列信息
columns: { columns: {
userId: { label: '用户编号', visible: true }, userId: { label: '用户编号', visible: true },
userName: { label: '用户名称', visible: true }, userName: { label: '用户名称', visible: true },
nickName: { label: '用户昵称', visible: true }, nickName: { label: '用户昵称', visible: true },
deptName: { label: '部门', visible: true },
phonenumber: { label: '手机号码', visible: true }, phonenumber: { label: '手机号码', visible: true },
status: { label: '状态', visible: true }, status: { label: '状态', visible: true },
createTime: { label: '创建时间', visible: true } createTime: { label: '创建时间', visible: true }
...@@ -317,15 +272,8 @@ export default { ...@@ -317,15 +272,8 @@ export default {
} }
} }
}, },
watch: {
// 根据名称筛选部门树
deptName(val) {
this.$refs.tree.filter(val)
}
},
created() { created() {
this.getList() this.getList()
this.getDeptTree()
this.getConfigKey("sys.user.initPassword").then(response => { this.getConfigKey("sys.user.initPassword").then(response => {
this.initPassword = response.msg this.initPassword = response.msg
}) })
...@@ -367,7 +315,6 @@ export default { ...@@ -367,7 +315,6 @@ export default {
}, },
// 节点单击事件 // 节点单击事件
handleNodeClick(data) { handleNodeClick(data) {
this.queryParams.deptId = data.id
this.handleQuery() this.handleQuery()
}, },
// 用户状态修改 // 用户状态修改
...@@ -390,16 +337,13 @@ export default { ...@@ -390,16 +337,13 @@ export default {
reset() { reset() {
this.form = { this.form = {
userId: undefined, userId: undefined,
deptId: undefined,
userName: undefined, userName: undefined,
nickName: undefined, nickName: undefined,
password: undefined, password: undefined,
phonenumber: undefined, phonenumber: undefined,
email: undefined,
sex: undefined, sex: undefined,
status: "0", status: "0",
remark: undefined, remark: undefined,
postIds: [],
roleIds: [] roleIds: []
} }
this.resetForm("form") this.resetForm("form")
...@@ -413,8 +357,6 @@ export default { ...@@ -413,8 +357,6 @@ export default {
resetQuery() { resetQuery() {
this.dateRange = [] this.dateRange = []
this.resetForm("queryForm") this.resetForm("queryForm")
this.queryParams.deptId = undefined
this.$refs.tree.setCurrentKey(null)
this.handleQuery() this.handleQuery()
}, },
// 多选框选中数据 // 多选框选中数据
...@@ -439,13 +381,9 @@ export default { ...@@ -439,13 +381,9 @@ export default {
/** 新增按钮操作 */ /** 新增按钮操作 */
handleAdd() { handleAdd() {
this.reset() this.reset()
getUser().then(response => { this.open = true
this.postOptions = response.posts this.title = "添加用户"
this.roleOptions = response.roles this.form.password = this.initPassword
this.open = true
this.title = "添加用户"
this.form.password = this.initPassword
})
}, },
/** 修改按钮操作 */ /** 修改按钮操作 */
handleUpdate(row) { handleUpdate(row) {
...@@ -453,9 +391,6 @@ export default { ...@@ -453,9 +391,6 @@ export default {
const userId = row.userId || this.ids const userId = row.userId || this.ids
getUser(userId).then(response => { getUser(userId).then(response => {
this.form = response.data this.form = response.data
this.postOptions = response.posts
this.roleOptions = response.roles
this.$set(this.form, "postIds", response.postIds)
this.$set(this.form, "roleIds", response.roleIds) this.$set(this.form, "roleIds", response.roleIds)
this.open = true this.open = true
this.title = "修改用户" this.title = "修改用户"
......
...@@ -5,4 +5,4 @@ VUE_APP_TITLE = STS门户网站 ...@@ -5,4 +5,4 @@ VUE_APP_TITLE = STS门户网站
ENV = 'production' ENV = 'production'
# 若依门户系统/生产环境 # 若依门户系统/生产环境
VUE_APP_BASE_API = '/prod-api' VUE_APP_BASE_API = 'http://101.126.159.207:8081'
...@@ -13,13 +13,11 @@ import org.springframework.web.bind.annotation.PostMapping; ...@@ -13,13 +13,11 @@ import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import com.ruoyi.common.config.MinioConfig;
import com.ruoyi.common.config.RuoYiConfig; import com.ruoyi.common.config.RuoYiConfig;
import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.file.FileUploadUtils; import com.ruoyi.common.utils.file.FileUploadUtils;
import com.ruoyi.common.utils.file.FileUtils; import com.ruoyi.common.utils.file.FileUtils;
import com.ruoyi.common.utils.file.MinioUtils;
import com.ruoyi.framework.config.ServerConfig; import com.ruoyi.framework.config.ServerConfig;
/** /**
...@@ -36,12 +34,6 @@ public class CommonController ...@@ -36,12 +34,6 @@ public class CommonController
@Autowired @Autowired
private ServerConfig serverConfig; private ServerConfig serverConfig;
@Autowired
private MinioConfig minioConfig;
@Autowired
private MinioUtils minioUtils;
private static final String FILE_DELIMITER = ","; private static final String FILE_DELIMITER = ",";
/** /**
...@@ -87,22 +79,9 @@ public class CommonController ...@@ -87,22 +79,9 @@ public class CommonController
String fileName; String fileName;
String url; String url;
// 检查是否启用MinIO String baseDir = RuoYiConfig.getUploadPath();
if (minioConfig.isEnabled()) fileName = FileUploadUtils.upload(baseDir, file);
{ url = serverConfig.getUrl() + fileName;
// 生成文件对象名称
fileName = FileUploadUtils.generateObjectName(file);
// 上传到MinIO
url = minioUtils.uploadFile(file, fileName);
}
else
{
// 上传文件路径
String filePath = RuoYiConfig.getUploadPath();
// 上传并返回新文件名称
fileName = FileUploadUtils.upload(filePath, file);
url = serverConfig.getUrl() + fileName;
}
AjaxResult ajax = AjaxResult.success(); AjaxResult ajax = AjaxResult.success();
ajax.put("url", url); ajax.put("url", url);
...@@ -113,9 +92,7 @@ public class CommonController ...@@ -113,9 +92,7 @@ public class CommonController
} }
catch (Exception e) catch (Exception e)
{ {
// 记录异常日志
log.error("上传文件失败", e); log.error("上传文件失败", e);
// 返回通用错误消息,避免返回包含绝对路径的异常消息
return AjaxResult.error("上传文件失败,请稍后重试"); return AjaxResult.error("上传文件失败,请稍后重试");
} }
} }
...@@ -133,35 +110,15 @@ public class CommonController ...@@ -133,35 +110,15 @@ public class CommonController
List<String> newFileNames = new ArrayList<String>(); List<String> newFileNames = new ArrayList<String>();
List<String> originalFilenames = new ArrayList<String>(); List<String> originalFilenames = new ArrayList<String>();
// 检查是否启用MinIO String baseDir = RuoYiConfig.getUploadPath();
if (minioConfig.isEnabled()) for (MultipartFile file : files)
{ {
for (MultipartFile file : files) String fileName = FileUploadUtils.upload(baseDir, file);
{ String url = serverConfig.getUrl() + fileName;
// 生成文件对象名称 urls.add(url);
String fileName = FileUploadUtils.generateObjectName(file); fileNames.add(fileName);
// 上传到MinIO newFileNames.add(FileUtils.getName(fileName));
String url = minioUtils.uploadFile(file, fileName); originalFilenames.add(file.getOriginalFilename());
urls.add(url);
fileNames.add(fileName);
newFileNames.add(FileUtils.getName(fileName));
originalFilenames.add(file.getOriginalFilename());
}
}
else
{
// 上传文件路径
String filePath = RuoYiConfig.getUploadPath();
for (MultipartFile file : files)
{
// 上传并返回新文件名称
String fileName = FileUploadUtils.upload(filePath, file);
String url = serverConfig.getUrl() + fileName;
urls.add(url);
fileNames.add(fileName);
newFileNames.add(FileUtils.getName(fileName));
originalFilenames.add(file.getOriginalFilename());
}
} }
AjaxResult ajax = AjaxResult.success(); AjaxResult ajax = AjaxResult.success();
...@@ -173,9 +130,7 @@ public class CommonController ...@@ -173,9 +130,7 @@ public class CommonController
} }
catch (Exception e) catch (Exception e)
{ {
// 记录异常日志
log.error("上传文件失败", e); log.error("上传文件失败", e);
// 返回通用错误消息,避免返回包含绝对路径的异常消息
return AjaxResult.error("上传文件失败,请稍后重试"); return AjaxResult.error("上传文件失败,请稍后重试");
} }
} }
...@@ -194,25 +149,12 @@ public class CommonController ...@@ -194,25 +149,12 @@ public class CommonController
throw new Exception(StringUtils.format("资源文件({})非法,不允许下载。 ", resource)); throw new Exception(StringUtils.format("资源文件({})非法,不允许下载。 ", resource));
} }
// 检查是否启用MinIO String localPath = RuoYiConfig.getProfile();
if (minioConfig.isEnabled()) String downloadPath = localPath + FileUtils.stripPrefix(resource);
{ String downloadName = StringUtils.substringAfterLast(downloadPath, "/");
// 从MinIO下载文件 response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
String objectName = FileUtils.stripPrefix(resource); FileUtils.setAttachmentResponseHeader(response, downloadName);
minioUtils.downloadFile(objectName, response); FileUtils.writeBytes(downloadPath, response.getOutputStream());
}
else
{
// 本地资源路径
String localPath = RuoYiConfig.getProfile();
// 数据库资源地址
String downloadPath = localPath + FileUtils.stripPrefix(resource);
// 下载名称
String downloadName = StringUtils.substringAfterLast(downloadPath, "/");
response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
FileUtils.setAttachmentResponseHeader(response, downloadName);
FileUtils.writeBytes(downloadPath, response.getOutputStream());
}
} }
catch (Exception e) catch (Exception e)
{ {
......
# 数据源配置
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.cj.jdbc.Driver
druid:
# 主库数据源
master:
url: jdbc:mysql://172.28.135.68:3306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: 123456
# 从库数据源
slave:
# 从数据源开关/默认关闭
enabled: false
url:
username:
password:
# 初始连接数
initialSize: 5
# 最小连接池数量
minIdle: 10
# 最大连接池数量
maxActive: 20
# 配置获取连接等待超时的时间
maxWait: 60000
# 配置连接超时时间
connectTimeout: 30000
# 配置网络超时时间
socketTimeout: 60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
timeBetweenEvictionRunsMillis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
minEvictableIdleTimeMillis: 300000
# 配置一个连接在池中最大生存的时间,单位是毫秒
maxEvictableIdleTimeMillis: 900000
# 配置检测连接是否有效
validationQuery: SELECT 1 FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
webStatFilter:
enabled: true
statViewServlet:
enabled: true
# 设置白名单,不填则允许所有访问
allow:
url-pattern: /druid/*
# 控制台管理用户名和密码
login-username: ruoyi
login-password: 123456
filter:
stat:
enabled: true
# 慢SQL记录
log-slow-sql: true
slow-sql-millis: 1000
merge-sql: true
wall:
config:
multi-statement-allow: true
\ No newline at end of file
# 项目相关配置 # 项目相关配置
ruoyi: ruoyi:
# 名称
name: 国际大科学计划网站 name: 国际大科学计划网站
# 版本
version: 3.9.1 version: 3.9.1
# 版权年份
copyrightYear: 2026 copyrightYear: 2026
# 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath)
profile: F:/ruoyi/uploadPath
# 获取ip地址开关
addressEnabled: false
# 验证码类型 math 数字计算 char 字符验证
captchaType: math captchaType: math
# 开发环境配置 # 开发环境配置
server: server:
# 服务器的HTTP端口,默认为8080
port: 8081
servlet: servlet:
# 应用的访问路径
context-path: / context-path: /
tomcat: tomcat:
# tomcat的URI编码
uri-encoding: UTF-8 uri-encoding: UTF-8
# 连接数满后的排队数,默认为100
accept-count: 1000 accept-count: 1000
threads: threads:
# tomcat最大线程数,默认为200
max: 800 max: 800
# Tomcat启动初始化的线程数,默认值10
min-spare: 100 min-spare: 100
# 日志配置
logging:
level:
com.ruoyi: debug
org.springframework: warn
# 用户配置 # 用户配置
user: user:
password: password:
# 密码最大错误次数
maxRetryCount: 5 maxRetryCount: 5
# 密码锁定时间(默认10分钟)
lockTime: 10 lockTime: 10
# Spring配置 # Spring配置
spring: spring:
# 资源信息
messages: messages:
# 国际化资源文件路径
basename: i18n/messages basename: i18n/messages
profiles: profiles:
active: druid active: dev
# 文件上传
servlet: servlet:
multipart: multipart:
# 单个文件大小
max-file-size: 10MB max-file-size: 10MB
# 设置总上传的文件大小
max-request-size: 20MB max-request-size: 20MB
# 服务模块
devtools: devtools:
restart: restart:
# 热部署开关
enabled: false enabled: false
# Jackson配置
jackson: jackson:
parser: parser:
allow-comments: true allow-comments: true
allow-unquoted-field-names: true allow-unquoted-field-names: true
allow-single-quotes: true allow-single-quotes: true
# redis 配置
redis:
# 是否启用Redis
enabled: true
# 地址
host: localhost
# 端口,默认为6379
port: 6379
# 数据库索引
database: 0
# 密码
password:
# 连接超时时间
timeout: 10s
lettuce:
pool:
# 连接池中的最小空闲连接
min-idle: 0
# 连接池中的最大空闲连接
max-idle: 8
# 连接池的最大数据库连接数
max-active: 8
# #连接池最大阻塞等待时间(使用负值表示没有限制)
max-wait: -1ms
# token配置 # token配置
token: token:
# 令牌自定义标识
header: Authorization header: Authorization
# 令牌密钥
secret: abcdefghijklmnopqrstuvwxyz secret: abcdefghijklmnopqrstuvwxyz
# 令牌有效期(默认30分钟)
expireTime: 30 expireTime: 30
# MyBatis配置 # MyBatis配置
mybatis: mybatis:
# 搜索指定包别名
typeAliasesPackage: com.ruoyi.**.domain typeAliasesPackage: com.ruoyi.**.domain
# 配置mapper的扫描,找到所有的mapper.xml映射文件
mapperLocations: classpath*:mapper/**/*Mapper.xml mapperLocations: classpath*:mapper/**/*Mapper.xml
# 加载全局的配置文件
configLocation: classpath:mybatis/mybatis-config.xml configLocation: classpath:mybatis/mybatis-config.xml
# PageHelper分页插件 # PageHelper分页插件
...@@ -120,38 +59,8 @@ pagehelper: ...@@ -120,38 +59,8 @@ pagehelper:
supportMethodsArguments: true supportMethodsArguments: true
params: count=countSql params: count=countSql
# Swagger配置
swagger:
# 是否开启swagger
enabled: true
# 请求前缀
pathMapping: /dev-api
# 防盗链配置
referer:
# 防盗链开关
enabled: false
# 允许的域名列表
allowed-domains: localhost,127.0.0.1,ruoyi.vip,www.ruoyi.vip
# 防止XSS攻击 # 防止XSS攻击
xss: xss:
# 过滤开关
enabled: true enabled: true
# 排除链接(多个用逗号分隔)
excludes: /system/notice excludes: /system/notice
# 匹配链接
urlPatterns: /system/*,/monitor/*,/tool/* urlPatterns: /system/*,/monitor/*,/tool/*
# MinIO配置
minio:
# MinIO服务地址
endpoint: http://172.28.135.68:9000
# 访问密钥
accessKey: admin
# 密钥
secretKey: 123456789
# 存储桶名称
bucketName: ruoyi
# 启用MinIO
enabled: true
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<configuration> <configuration>
<!-- 日志存放路径 --> <!-- 日志存放路径 -->
<property name="log.path" value="/home/ruoyi/logs" /> <property name="log.path" value="logs" />
<!-- 日志输出格式 --> <!-- 日志输出格式 -->
<property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" /> <property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment