嗨,我有一个返回数组对象密码的api策略包含
PasswordMinLength: 6
passwordMinLowerCase: 1
passwordMinNumber: 1
passwordMinSymbol: 0
passwordMinUpperCase: 1
数字可以根据用户示例的角色不断变化
PasswordMinLength: Password min length.
PasswordMinLowerCase: This is currently either 0 or 1 So, if it's returning 1 for example it should have 1 minimum lower case. If it's returning 0 then the check should be ignored for lower case.
PasswordMinUpperCase: Same as above for upper case requirement.
PasswordMinSymbol: Same as above for symbol.
PasswordMinNumber: same as above to determine if a number is required in the password.
我知道我们可以使用正则表达式模式验证进行验证,请参阅下面如何使用Angular 5 Validator Pattern验证密码强度
但是当数据不断变化时,如何动态地实现验证。
我需要验证newpwdctrlname。
resetPwdForm: FormGroup = new FormGroup({
newpwdctrlname: new FormControl('', [Validators.required, Validators.minLength(6)]),
shownewpwdctrlname: new FormControl('', []),
rptpwdctrlname: new FormControl('', [Validators.required])
});
您应该在验证器数组中使用regex
下面是如何在Angular中使用regex的示例:
export class TestComponent implements OnInit {
private phonePattern = '([0-9]{3})[-]([0-9]{3})[-]([0-9]{4})';
private emailPattern = '[a-z0-9._%+-]+@[a-z0-9.-]+.[a-z]{2,4}';
public phone: FormControl = new FormControl(
'',
[Validators.required, Validators.pattern(this.phonePattern)]
);
public email: FormControl = new FormControl(
'',
[Validators.required, Validators.pattern(this.emailPattern)]
);
public ngOnInit(): void { }
}
您还可以检查:
模式验证 - 角度文档
角模式验证-StackOverflow
这里有一个你可以如何做的例子:
export class TestComponent implements OnInit {
private passwordMinLength: number = 6;
private passwordMinLowerCase: number = 1;
private passwordMinNumber: number = 1;
private passwordMinSymbol: number = 0;
private passwordMinUpperCase: number = 1;
private passwordPattern: string;
public password: FormControl = new FormControl(
'',
[Validators.required, Validators.pattern(this.passwordPattern)]
);
public ngOnInit(): void {
this.passwordPattern = (
passwordMinLenght ? REGEXString : '.' +
passwordMinLowerCase ? REGEXString : '' +
passwordMinNumber? REGEXString : '' +
passwordMinSymbol? REGEXString : '' +
passwordMinUpperCase? REGEXString : ''
);
}
}
试试这个。
更改角色更改时的关联验证器。
import { CustomValidators } from 'ng2-validation';
//add or remove validator dynamically
onRoleChange($role ){
if(role == 'admin')
{ this.resetPwdForm.get('newpwdctrlname').setValidators([Validators.min(3),Validators.required]);
}
else if(role == 'not admin'){
this.resetPwdForm.get('ewpwdctrlname').setValidators([Validators.required, Validators.pattern('<Pattern>'), CustomValidators.equalTo(password]);
}
}
根据需要创建自定义验证程序。
参考-https://dzone.com/articles/how-to-create-custom-validators-in-angular
您可以使用字符串插值动态生成模式
大约
passRequirement = {
passwordMinLowerCase: 1,
passwordMinNumber: 1,
passwordMinSymbol: 2,
passwordMinUpperCase: 1,
passwordMinCharacters: 8
};
pattern = [
`(?=([^a-z]*[a-z])\{${this.passRequirement.passwordMinLowerCase},\})`,
`(?=([^A-Z]*[A-Z])\{${this.passRequirement.passwordMinUpperCase},\})`,
`(?=([^0-9]*[0-9])\{${this.passRequirement.passwordMinNumber},\})`,
`(?=(\.\*[\$\@\$\!\%\*\?\&])\{${this.passRequirement.passwordMinSymbol},\})`,
`[A-Za-z\\d\$\@\$\!\%\*\?\&\.]{${
this.passRequirement.passwordMinCharacters
},}`
]
.map(item => item.toString())
.join("");
resetPwdForm = this.fb.group({
newpwdctrlname: ['Passwod1@@5', [Validators.required, Validators.pattern(this.pattern)]],
shownewpwdctrlname: ['', []],
rptpwdctrlname: ['', [Validators.required]]
});
constructor (private fb: FormBuilder) {}
然后,您可以将其用作
Validators.pattern(this.pattern)
查看Stackblitz上的演示
问题内容: 因此,我必须创建验证密码是否有效的代码: 至少8个字符长 包含至少1个数字 包含至少1个大写字母 这是代码: 我不确定出什么问题,但是当我输入带有数字的密码时-它会一直告诉我我需要一个带有数字的密码。有什么办法吗? 问题答案: 您可以将模块用于正则表达式。 有了它,您的代码将如下所示:
主要内容:使用方式,实例演示jQuery Password Validation(密码验证)插件扩展了 jQuery Validate 插件,提供了两种组件: 一种评价密码的相关因素的功能:比如大小写字母的混合情况、字符(数字、特殊字符)的混合情况、长度、与用户名的相似度(可选的)。 一种使用评价功能显示密码强度的验证插件自定义方法。显示的文本可以被本地化。 您可以简单地自定义强度显示的外观、本地化消息显示,并集成到已有的表
本文向大家介绍laravel unique验证、确认密码confirmed验证以及密码修改验证的方法,包括了laravel unique验证、确认密码confirmed验证以及密码修改验证的方法的使用技巧和注意事项,需要的朋友参考一下 confirmed 验证字段必须有一个匹配字段 foo_confirmation,例如,如果验证字段是 password,必须输入一个与之匹配的 password_
本文向大家介绍基于C#实现12306的动态验证码变成静态验证码的方法,包括了基于C#实现12306的动态验证码变成静态验证码的方法的使用技巧和注意事项,需要的朋友参考一下 本以为这次12306的动态验证码很厉害,什么刷票软件都不行了,看了以后发现并不是很复杂,估计不出两日刷票软件又会卷土重来,开来要一个验证码很难遏制这些刷票软了。 这次换的动态验证码采用的是GIF格式在客户端输出,至于要拿到这个g
我知道SAML是如何用于单点登录(SSO)的。也就是说,从SP重定向到IDP,并从SAML响应/断言获取用户身份。 我的问题是-SAML 2.0规范是否定义了如何将用户名和密码作为SAML请求xml的一部分进行身份验证?请注意,我不是在谈论单点登录,只是想要用户名/密码的身份验证。 谢谢,
所以问题是:应该如何正确验证密码?