我正在使用一个功能来验证用户密码的更新。
我需要使用以下正则表达式来增强密码:
(?=^.{8,}$)(?=.\d)(?=.*[a-z])(?=.*[A-Z])(?!.*\s)[0-9a-zA-Z!@#$%^&*()]*$
但是我不知道如何在我的代码中实现它。
这是我的代码:
// UpdatePassword uptdate the password for this user.
func UpdatePassword(unitID string, loginID string, password string) (err error) {
f := GetFederation(unitID)
ldap := connections[f.Connection]
hash, err := HashPassword(password, "SSHA", nil)
if err != nil {
msg := fmt.Sprintf("password hash generation failed for %s. Error: %s", loginID, err.Error())
return errors.New(msg)
}
originalPasswordHash, err := mdb.GetUserPasswordHash(loginID, f.ID)
if err != nil {
if err.Error() == mgo.ErrNotFound.Error() && ldap != nil {
var profile map[string]string
profile, err = ldap.GetProfile(loginID)
if err != nil {
debug.Println("get Profile error ", err)
return err
}
login := profile[config.Connections[f.ID].LoginField]
loginID, originalPasswordHash, err = ldap.GetPasswordHash(login)
if err != nil {
return err
}
} else {
return err
}
}
if err = mdb.ChangeUserPassword(loginID, f.ID, hash); err != nil {
debug.Println("ChangeUserPassword error ", err)
return err
}
if ldap != nil {
err = ldap.ChangePassword(loginID, password)
if err != nil {
info.Printf("revert password change in DB for user %s", loginID)
if err = mdb.ChangeUserPassword(loginID, f.ID, originalPasswordHash); err != nil {
return fmt.Errorf("cannot revert password for user %s in DB", loginID)
}
return fmt.Errorf("cannot change password for user %s in ldap", loginID)
}
}
return nil
}
你有个主意吗?
非常感谢您