狠狠撸
Submit Search
Password validation with Passay
?
0 likes
?
1,155 views
Takuya Iwatsuka
Follow
Spring in Summer の懇親会LTで話した内容です.一部危ないスライドを削っています.
Read less
Read more
1 of 19
Download now
Download to read offline
More Related Content
Password validation with Passay
1.
Password Validation with Passay 2015/8/28
Spring in Summer 懇親会 岩塚 卓弥 1
2.
あんた誰 名前:岩塚 卓弥 仕事:某通信会社の研究者 ソフトウェア工学とかの研究 最近は仕事でSpringを使用 2
3.
何の話をするの 5 アカウント登録 アカウント名 : パスワード: パスワード(確認):
4.
何の話をするの 5 アカウント登録 アカウント名 : パスワード: パスワード(確認): はいはいアカウント名と パスワードっと iwatsuka *** ***
5.
何の話をするの 5 アカウント登録 アカウント名 : パスワード: パスワード(確認): はいはいアカウント名と パスワードっと パスワードは10文字以上で 大文字と小文字と数字を それぞれ一文字以上含めて下さい iwatsuka *** ***
6.
何の話をするの 5 アカウント登録 アカウント名 : パスワード: パスワード(確認): (; ?Д`) はいはいアカウント名と パスワードっと パスワードは10文字以上で 大文字と小文字と数字を それぞれ一文字以上含めて下さい iwatsuka *** ***
7.
何の話をするの 5 アカウント登録 アカウント名 : パスワード: パスワード(確認): (; ?Д`) はいはいアカウント名と パスワードっと パスワードは10文字以上で 大文字と小文字と数字を それぞれ一文字以上含めて下さい ↑ コレの作り方について話します iwatsuka *** ***
8.
やりたいこと パスワードの満たすべき条件をチェックしたい チェックのロジックを汎用的に使いまわしたい 条件を柔軟にカスタマイズできると嬉しい 自作しようとすると結構面倒 6
9.
使う機能?ライブラリ Bean Validation Java標準のValidation API もちろん
Spring Framework から使える Passay ( http://www.passay.org ) パスワードValidation / Generation ライブラリ 7
10.
Passayの使い方 1. Validationのルールをインスタンス化する 2. PasswordValidatorにルールをセットする 3.
PasswordValidatorでパスワードをチェックする 8
11.
1. Validationのルールをインスタンス 化する よく使われるルールがクラスとして提供されている 「含まなければいけない」系ルール 長さ,大文字,小文字,数字,特殊文字,… 「含んではいけない」系ルール 最近使用したもの,ユーザ名を含むもの,… 自分でルールを作ることもできる 既存のルールのクラスを継承すると楽 9
12.
1. Validationのルールをインスタンス 化する 基本的に複数のルールを組み合わせて使う ルールのインスタンスをリストに格納 10 List<Rule> rules
= Arrays.asList( new LengthRule(8, 14), new CharacterRule(EnglishCharacterRule.UpperCase, 1), new CharacterRule(EnglishCharacterRule.LowerCase, 1) ) 長さ8~14文字 大文字?小文字をそれぞれ1字以上含む
13.
2. PasswordValidator にルールを セットする 実際にValidationを行うクラス コンストラクタにルールのリストを渡す ルールの差し替えはできない 11 PasswordValidator
validator = new PasswordValidator(rules);
14.
3. PasswordValidatorでパスワード をチェックする 12 PasswordData pd
= new PasswordData(password); RuleResult result = validator.validate(pd); boolean isValid = result.isValid(); 文字列からPasswordDataを作成 結果やメッセージを RuleResultとして返す 結果の取得
15.
Custom Validatorを作る 13 @Retention(RetentionPolicy.RUNTIME) @Target(/* …
*/) @Constraint(validatedBy=CustomValidator.class) @Documented public @interface Password { public class CustomValidator implements ConstraintValidator<Password, Object> { @Autowired PasswordValidator passwordValidator; @Override private boolean isValid(Object value, ConstraintValidatorContext context){ //ここでPasswordValidatorを使う 詳細は略! Google先生に聞いて! Bean定義しておいた PasswordValidatorをInjection
16.
利用イメージ 14 public class AccountForm
{ @Password private String Password; @Controller public class AccountController { @RequestMapping(/* … */) private String create( @Validated AccountForm form, BindingResult bindingResult, /* … */){ Custom Validatorを付与する チェックする
17.
まとめ Bean Validation と
Passay で簡単にパスワードの Validationができるよ ルールが柔軟に組み合わせられる カスタムルールも作れる 15
18.
まとめ Bean Validation と
Passay で簡単にパスワードの Validationができるよ ルールが柔軟に組み合わせられる カスタムルールも作れる 15 さまざまなルールをくみあわせて キミだけの PasswordValidator をつくろう!
19.
16 完
Download