Bladeren bron

fix: 密码修改增加密码强度校验

lihao16 1 maand geleden
bovenliggende
commit
7941204d7e

+ 5 - 2
smsb-plus-ui/src/views/system/user/index.vue

@@ -507,9 +507,12 @@ const handleResetPwd = async (row: UserVO) => {
       confirmButtonText: '确定',
       cancelButtonText: '取消',
       closeOnClickModal: false,
-      inputPattern: /^.{5,20}$/,
-      inputErrorMessage: '用户密码长度必须介于 5 和 20 之间',
+      inputPattern: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[+_!@#$%^&*.,?])[A-Za-z\d+_!@#$%^&*.,?]{5,20}$/,
+      inputErrorMessage: '必须包含大小写字母、数字和特殊符号(+_!@#$%^&*.,?),长度为5-20位',
       inputValidator: (value) => {
+        if (!/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[+_!@#$%^&*.,?])[A-Za-z\d+_!@#$%^&*.,?]{5,20}$/.test(value)) {
+          return '必须包含大小写字母、数字和特殊符号(+_!@#$%^&*.,?),长度为5-20位';
+        }
         if (/<|>|"|'|\||\\/.test(value)) {
           return '不能包含非法字符:< > " \' \\\ |';
         }

+ 16 - 7
smsb-plus-ui/src/views/system/user/profile/resetPwd.vue

@@ -35,17 +35,26 @@ const equalToPassword = (rule: any, value: string, callback: any) => {
     callback();
   }
 };
+
+const validateNewPassword = (rule: any, value: string, callback: any) => {
+  if (!value) {
+    callback(new Error('新密码不能为空'));
+  } else if (value.length < 6 || value.length > 20) {
+    callback(new Error('长度在 6 到 20 个字符'));
+  } else if (!/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[+_!@#$%^&*.,?])[A-Za-z\d+_!@#$%^&*.,?]{6,20}$/.test(value)) {
+    callback(new Error('必须包含大小写字母、数字和特殊符号(+_!@#$%^&*.,?)'));
+  } else if (/<|>|"|'|\||\\/.test(value)) {
+    callback(new Error('不能包含非法字符:< > " \' \\\ |'));
+  } else {
+    callback();
+  }
+};
+
 const rules = ref({
   oldPassword: [{ required: true, message: '旧密码不能为空', trigger: 'blur' }],
   newPassword: [
     { required: true, message: '新密码不能为空', trigger: 'blur' },
-    {
-      min: 6,
-      max: 20,
-      message: '长度在 6 到 20 个字符',
-      trigger: 'blur'
-    },
-    { pattern: /^[^<>"'|\\]+$/, message: '不能包含非法字符:< > " \' \\\ |', trigger: 'blur' }
+    { validator: validateNewPassword, trigger: 'blur' }
   ],
   confirmPassword: [
     { required: true, message: '确认密码不能为空', trigger: 'blur' },