This commit is contained in:
那些花儿
2025-06-16 18:04:01 +08:00
parent 96a9b8aa27
commit b11da17739
6 changed files with 35 additions and 23 deletions
@@ -69,12 +69,12 @@ public class SysUserController {
return Result.error("用户名已存在!");
}
}
if (!ReUtil.isMatch("^[a-zA-Z0-9][a-zA-Z0-9]{1,19}$", user.getLoginname())) {
return Result.error("用户名只能是字母数字,且长度在2-20之间!");
if (!ReUtil.isMatch("^(?=.*[a-z])(?=.*[A-Z])(?=.*\\\\d)(?=.*[!@#$%^&*()\\\\-_=+{};:,<.>]).{8,20}$", user.getLoginname())) {
return Result.error("密码必须包含大小写字母数字和特殊符号,且长度在8-20之间");
}
if (!ReUtil.isMatch("^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)[A-Za-z\\d]{8,20}$", user.getPassword())) {
return Result.error("密码必须包含大写字母、小写字母和数字,并且长度在8-20之间!");
if (!ReUtil.isMatch("^(?=.*[a-z])(?=.*[A-Z])(?=.*\\\\d)(?=.*[!@#$%^&*()\\\\-_=+{};:,<.>]).{8,20}$", user.getPassword())) {
return Result.error("密码必须包含大写字母、数字和特殊符号,且长度在8-20之间");
}
String salt = R.UU32();
@@ -329,6 +329,6 @@ public class Sys_user extends BaseModel implements Serializable {
@Comment("是否禁用")
@Default(value = "0")
@ColDefine(type = ColType.BOOLEAN)
private Boolean disabled;
private boolean disabled;
}
@@ -154,6 +154,15 @@ public interface SysUserService extends BaseService<Sys_user> {
*/
Sys_user loginByLoginName(String loginname);
/**
* 通过用户名获取用户信息
*
* @param loginname 用户名
* @return
* @throws BaseException
*/
Sys_user getUserByLoginname(String loginname) throws BaseException;
/**
* 通过用户ID获取用户信息
*
@@ -300,6 +300,9 @@ public class SysUserServiceImpl extends BaseServiceImpl<Sys_user> implements Sys
if (user == null) {
throw new BaseException("用户不存在");
}
if (user.isDisabled()) {
throw new BaseException("用户被禁用");
}
// base64解码密码
String decodePwd = Base64Decoder.decodeStr(passowrd);
String hashedPassword = PwdUtil.getPassword(decodePwd, user.getSalt());
@@ -339,6 +342,7 @@ public class SysUserServiceImpl extends BaseServiceImpl<Sys_user> implements Sys
}
// 这里不能用缓存,因为没有 userId 没法用前缀清除,会造成缓存清除不干净
@Override
public Sys_user getUserByLoginname(String loginname) throws BaseException {
Sys_user user = this.fetch(Cnd.where("loginname", "=", loginname));
if (user == null) {
@@ -22,7 +22,6 @@ import java.util.regex.Pattern;
/**
* SQL XSS拦截
* Created by wizzer on 2016/7/1.
*/
public class XssSqlFilterProcessor extends AbstractProcessor {
@@ -40,18 +40,18 @@ layout("/layouts/platform.html"){
<el-table-column prop="username" label="姓名" header-align="center" :show-overflow-tooltip="true"></el-table-column>
<el-table-column prop="sex" label="性别" header-align="center" :show-overflow-tooltip="true"></el-table-column>
<el-table-column prop="unitName" label="所属单位" header-align="center" align="center" :show-overflow-tooltip="true"></el-table-column>
<!-- <el-table-column sortable prop="disabled" label="帐号状态" header-align="center" align="center" :show-overflow-tooltip="true">-->
<!-- <template slot-scope="scope">-->
<!-- <i v-if="scope.row.disabled" class="fa fa-circle text-danger ml5"></i>-->
<!-- <i v-if="!scope.row.disabled" class="fa fa-circle text-success ml5"></i>-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- <el-table-column sortable prop="userOnline" label="在线状态" header-align="center" align="center" :show-overflow-tooltip="true">-->
<!-- <template slot-scope="scope">-->
<!-- <i v-if="scope.row.userOnline" class="text-success ml5">在线</i>-->
<!-- <i v-if="!scope.row.userOnline" class="text-danger ml5">离线</i>-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- <el-table-column sortable prop="disabled" label="帐号状态" header-align="center" align="center" :show-overflow-tooltip="true">-->
<!-- <template slot-scope="scope">-->
<!-- <i v-if="scope.row.disabled" class="fa fa-circle text-danger ml5"></i>-->
<!-- <i v-if="!scope.row.disabled" class="fa fa-circle text-success ml5"></i>-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- <el-table-column sortable prop="userOnline" label="在线状态" header-align="center" align="center" :show-overflow-tooltip="true">-->
<!-- <template slot-scope="scope">-->
<!-- <i v-if="scope.row.userOnline" class="text-success ml5">在线</i>-->
<!-- <i v-if="!scope.row.userOnline" class="text-danger ml5">离线</i>-->
<!-- </template>-->
<!-- </el-table-column>-->
<el-table-column prop="userOnline" label="操作" width="120">
<template slot-scope="scope">
<el-dropdown @command="dropdownCommand">
@@ -249,17 +249,17 @@ layout("/layouts/platform.html"){
password: [
{ required: true, message: "请输入密码", trigger: "blur" },
{
pattern: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[\S]{8,20}$/,
message: "密码必须8位及以上且包含大写字母、小写字母数字",
pattern: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[!@#$%^&*()\-_=+{}[\]|;:'",.<>/?]).{8,20}$/,
message: "密码必须同时包含大小写字母数字、特殊符号,且长度在8到20位之间",
trigger: "change"
},
{ min: 3, max: 20, message: "密码长度必须是3-20位", trigger: "change" }
{ min: 8, max: 20, message: "密码长度必须是8-20位", trigger: "change" }
],
passwordAgain: [
{ required: true, message: "请再次输入新密码", trigger: "blur" },
{
pattern: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[\S]{8,20}$/,
message: "密码必须包含大写字母、小写字母和数字,并且长度在8-20之间",
pattern: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[!@#$%^&*()\-_=+{}[\]|;:'",.<>/?]).{8,20}$/,
message: "密码必须同时包含大写字母、数字、特殊符号,且长度在820之间",
trigger: "change"
},
{ validator: validatePass, trigger: "change" }