1概要

この簡単なチュートリアルでは、登録時の適切なパスワードの制限を実装して表示する方法について説明します。のようなもの – パスワードは特殊文字を含める必要があります、またはそれは少なくとも8文字の長さにする必要があります。

強力なパスワードルールを使用できるようにしたいのですが、実際には手動でこれらのルールを実装する必要はありません。それで、我々は成熟したhttp://www.passay.org/[Passay library]をうまく利用するつもりです。


2カスタムパスワード制限

まず、カスタム制約

ValidPassword

を作成しましょう。

@Documented
@Constraint(validatedBy = PasswordConstraintValidator.class)
@Target({ TYPE, FIELD, ANNOTATION__TYPE })
@Retention(RUNTIME)
public @interface ValidPassword {

    String message() default "Invalid Password";

    Class<?>[]groups() default {};

    Class<? extends Payload>[]payload() default {};

}

そして

UserDto

でそれを使用します。

@ValidPassword
private String password;


3カスタムパスワードバリデータ

それでは、実際に手動で実装しなくても、ライブラリを使用して強力なパスワードルールを作成しましょう。

パスワードバリデータ

PasswordConstraintValidator

を作成します。そして、パスワードのルールを定義します。

public class PasswordConstraintValidator implements ConstraintValidator<ValidPassword, String> {

    @Override
    public void initialize(ValidPassword arg0) {
    }

    @Override
    public boolean isValid(String password, ConstraintValidatorContext context) {
        PasswordValidator validator = new PasswordValidator(Arrays.asList(
           new LengthRule(8, 30),
           new UppercaseCharacterRule(1),
           new DigitCharacterRule(1),
           new SpecialCharacterRule(1),
           new NumericalSequenceRule(3,false),
           new AlphabeticalSequenceRule(3,false),
           new QwertySequenceRule(3,false),
           new WhitespaceRule()));

        RuleResult result = validator.validate(new PasswordData(password));
        if (result.isValid()) {
            return true;
        }
        context.disableDefaultConstraintViolation();
        context.buildConstraintViolationWithTemplate(
          Joiner.on(",").join(validator.getMessages(result)))
          .addConstraintViolation();
        return false;
    }
}

パスワードが無効な場合は、** ここで新しい制約違反を作成し、デフォルトの違反を無効にしていることに注意してください。

最後に、

Passay

ライブラリをpomに追加しましょう。

<dependency>
    <groupId>org.passay</groupId>
    <artifactId>passay</artifactId>
    <version>1.0</version>
</dependency>

歴史的な情報については、Passayは由緒ある

vt-password

Javaライブラリーの子孫です。

** 4 JSパスワードメーター

サーバー側が完成したので、クライアント側を見て、JavaScriptを使用した単純な



パスワード強度

“機能

を実装しましょう。

パスワードの強度を

registration.html

に表示するには、単純なjQueryプラグイン(http://plugins.jquery.com/pwstrength-bootstrap/[Twitter Bootstrap用のjQueryパスワード強度メーター])を使用します。

<input id="password" name="password" type="password"/>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script src="pwstrength.js"></script>
<script type="text/javascript">
$(document).ready(function () {
    options = {
        common: {minChar:8},
        ui: {
            showVerdictsInsideProgressBar:true,
            showErrors:true,
            errorMessages:{
                wordLength: '<spring:message code="error.wordLength"/>',
                wordNotEmail: '<spring:message code="error.wordNotEmail"/>',
                wordSequences: '<spring:message code="error.wordSequences"/>',
                wordLowercase: '<spring:message code="error.wordLowercase"/>',
                wordUppercase: '<spring:message code="error.wordUppercase"/>',
                wordOneNumber: '<spring:message code="error.wordOneNumber"/>',
                wordOneSpecialChar: '<spring:message code="error.wordOneSpecialChar"/>'
            }
        }
    };
    $('#password').pwstrength(options);
});
</script>


5結論

そしてそれだけです – クライアント側でパスワードの強さを示し、サーバー側で特定のパスワード規則を適用するためのシンプルだが非常に便利な方法です。

このチュートリアルの

完全な実装

はhttps://github.com/eugenp/spring-security-registration[the github project]にあります – これはEclipseベースのプロジェクトなので、インポートして実行するのは簡単です。そうです。




  • «** 前へ