|
|
@@ -16,6 +16,7 @@
|
|
|
<el-form-item label="确认密码:" prop="password1">
|
|
|
<el-input v-model="temp.password1" type="password" auto-complete="off" />
|
|
|
</el-form-item>
|
|
|
+ <p class='password'>密码设置规则:大小写字母+数字+特殊符号;不少于8位;不得用连号的数字或者字母;</p>
|
|
|
<el-form-item>
|
|
|
<el-button type="primary" @click.native.prevent="toAmend">确认修改</el-button>
|
|
|
</el-form-item>
|
|
|
@@ -30,8 +31,8 @@ export default {
|
|
|
var oldPass = (rule, value, callback) => {
|
|
|
if (!value) {
|
|
|
callback(new Error('请输入旧密码'))
|
|
|
- } else if (value.toString().length < 6 || value.toString().length > 18) {
|
|
|
- callback(new Error('密码长度为6-18位'))
|
|
|
+ } else if (value.toString().length < 8 || value.toString().length > 18) {
|
|
|
+ callback(new Error('密码长度为8-18位'))
|
|
|
} else {
|
|
|
callback()
|
|
|
}
|
|
|
@@ -40,12 +41,54 @@ export default {
|
|
|
console.log(value)
|
|
|
if (!value) {
|
|
|
callback(new Error('请输入新密码'))
|
|
|
- } else if (value.toString().length < 6 || value.toString().length > 18) {
|
|
|
- callback(new Error('密码长度为6-18位'))
|
|
|
+ } else if (value.toString().length < 8 || value.toString().length > 18) {
|
|
|
+ callback(new Error('密码长度为8-18位'))
|
|
|
} else {
|
|
|
callback()
|
|
|
}
|
|
|
}
|
|
|
+// 新密码的规则
|
|
|
+const validatePassword=(rule, password, callback)=> {
|
|
|
+ const lengthRequirement = /.{8,}/;// 至少8个字符
|
|
|
+ const upperCaseRequirement = /[A-Z]/;// 至少一个大写字母
|
|
|
+ const lowerCaseRequirement = /[a-z]/;// 至少一个小写字母
|
|
|
+ const digitRequirement = /\d/;// 至少一个数字
|
|
|
+ const specialCharRequirement = /[!@#$%^&*(),.?":{}|<>]/;// 至少一个特殊符号
|
|
|
+
|
|
|
+ const noSequentialChars = /^(?!.*(?:012|123|234|345|456|567|678|789|890|abc|bcd|cde|def|efg|fgh|ghi|hij|ijk|jkl|klm|lmn|mno|nop|opq|pqr|qrs|rst|stu|tuv|uvw|vwx|wxy|xyz|yz|za)).*$/; // 不含连号的数字或字母
|
|
|
+ const noCommonPatterns = /^(?!.*(?:1qaz|2wsx|3edc|4rfv|5tgb|6yhn|7ujm|8ik,|9ol.|0p;\/)).*$/; // 不含常见模式
|
|
|
+
|
|
|
+ if (!lengthRequirement.test(password)) {
|
|
|
+ callback(new Error('密码长度不能少于8位'))
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if (!upperCaseRequirement.test(password)) {
|
|
|
+ callback(new Error('密码必须包含大写字母'))
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if (!lowerCaseRequirement.test(password)) {
|
|
|
+ callback(new Error('密码必须包含小写字母'))
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if (!digitRequirement.test(password)) {
|
|
|
+ callback(new Error('密码必须包含数字'))
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if (!specialCharRequirement.test(password)) {
|
|
|
+ callback(new Error('密码必须包含特殊符号'))
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if (!noSequentialChars.test(password)) {
|
|
|
+ callback(new Error('密码不能包含连号的数字或字母'))
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if (!noCommonPatterns.test(password)) {
|
|
|
+ callback(new Error('密码不能包含常见模式(如1qaz2wsx等)'))
|
|
|
+ return
|
|
|
+ }
|
|
|
+ callback()
|
|
|
+ }
|
|
|
+
|
|
|
var validatePass2 = (rule, value, callback) => {
|
|
|
if (value === '') {
|
|
|
callback(new Error('请再次输入密码'))
|
|
|
@@ -70,7 +113,7 @@ export default {
|
|
|
{ required: true, validator: oldPass, trigger: 'blur' }
|
|
|
],
|
|
|
password: [
|
|
|
- { required: true, validator: validatePass, trigger: 'blur' }
|
|
|
+ { required: true, validator: validatePassword, trigger: 'blur' }
|
|
|
],
|
|
|
password1: [
|
|
|
{ required: true, validator: validatePass2, trigger: 'blur' }
|
|
|
@@ -162,4 +205,9 @@ export default {
|
|
|
margin: 20px 0 0;
|
|
|
}
|
|
|
}
|
|
|
+.password{
|
|
|
+ font-size: 14px;
|
|
|
+ text-align: center;
|
|
|
+ color:#F56C6C;
|
|
|
+}
|
|
|
</style>
|