Creating your own password validator
You can create your own password validation. The new password validator class must implement the PasswordValidator interface:
public interface PasswordValidator { /** * Validate * * @param password * @throws ValidatorException */ public void Validate(String password) throws ValidatorException;
}Sample
Section titled “Sample”CompletePasswordValidator class:
/** * Complex password validator */public class CompletePasswordValidator implements PasswordValidator { @SuppressWarnings("unused") private static Logger log = LoggerFactory.getLogger(CompletePasswordValidator.class);
@Override public void Validate(String password) throws ValidatorException { validateLength(password); checkLowerCase(password); checkUpperCase(password); checkDigits(password); checkSpecial(password); }
/** * Validate length */ private void validateLength(String password) throws ValidatorException { if (Config.VALIDATOR_PASSWORD_MIN_LENGTH > 0 && password.length() < Config.VALIDATOR_PASSWORD_MIN_LENGTH) { throw new ValidatorException(Config.VALIDATOR_PASSWORD_ERROR_MIN_LENGTH); }
if (Config.VALIDATOR_PASSWORD_MAX_LENGTH > 0 && password.length() > Config.VALIDATOR_PASSWORD_MAX_LENGTH) { throw new ValidatorException(Config.VALIDATOR_PASSWORD_ERROR_MAX_LENGTH); } }
/** * Validate lowercase characters */ private void checkLowerCase(String password) throws ValidatorException { int count = 0;
if (Config.VALIDATOR_PASSWORD_MIN_LOWERCASE > 0) { for (int i=0; i<password.length(); i++) { if (Character.isLowerCase(password.charAt(i))) { count ++; } }
if (Config.VALIDATOR_PASSWORD_MIN_LOWERCASE > count) { throw new ValidatorException(Config.VALIDATOR_PASSWORD_ERROR_MIN_LOWERCASE); } } }
/** * Validate uppercase characters */ private void checkUpperCase(String password) throws ValidatorException { int count = 0;
if (Config.VALIDATOR_PASSWORD_MIN_UPPERCASE > 0) { for (int i=0; i<password.length(); i++) { if (Character.isUpperCase(password.charAt(i))) { count ++; } }
if (Config.VALIDATOR_PASSWORD_MIN_UPPERCASE > count) { throw new ValidatorException(Config.VALIDATOR_PASSWORD_ERROR_MIN_UPPERCASE); } } }
/** * Validate digits */ private void checkDigits(String password) throws ValidatorException { int count = 0;
if (Config.VALIDATOR_PASSWORD_MIN_DIGITS > 0) { for (int i=0; i<password.length(); i++) { if (Character.isDigit(password.charAt(i))) { count ++; } }
if (Config.VALIDATOR_PASSWORD_MIN_DIGITS > count) { throw new ValidatorException(Config.VALIDATOR_PASSWORD_ERROR_MIN_DIGITS); } } }
/** * Validate special characters */ private void checkSpecial(String password) throws ValidatorException { int count = 0;
if (Config.VALIDATOR_PASSWORD_MIN_SPECIAL > 0) { for (int i=0; i<password.length(); i++) { if (!Character.isLetterOrDigit(password.charAt(i)) && !Character.isWhitespace(password.charAt(i))) { count ++; } }
if (Config.VALIDATOR_PASSWORD_MIN_SPECIAL > count) { throw new ValidatorException(Config.VALIDATOR_PASSWORD_ERROR_MIN_SPECIAL); } } }}