13.認證服務-登入註冊功能
阿新 • • 發佈:2022-03-17
一、引數校驗補充
通過註解可以給前端傳遞過來的值進行校驗,例如:
但是這個註解必須配合 @Valid 使用,完成對引數的校驗:
而校驗的結果,也會自動封裝到 BindingResult 型別中,通過這個引數可以很方便的對錯誤的引數進行處理。
hasErrors() 可以判斷是否有引數校驗錯誤,如果有,可以通過 getFieldsErrors() 方法獲取錯誤列表。
注意:@Valid 和 BindingResult 是一一對應的,多個 @Valid 標註的引數實體後面要對應各自的 BindingResult.
二、SpringMVC 重定向攜帶資料
三、MD5&MD5鹽值加密
MD5
Message Digest algorithm 5,資訊摘要演算法
- 壓縮性:任意長度的資料,算出的 MD5 值長度都是固定的;
- 容易計算:從原資料計算出 MD5 值很容易;
- 抗修改性:對原資料進行任何改動,哪怕只修改 1 個位元組,所得到的 MD5 值都有很大區別;
- 強抗碰撞:想找到兩個不同的資料,使它們具有相同的 MD5 值是非常困難的;
- 不可逆
@Test void contextLoads() { String s = DigestUtils.md5Hex("123456"); System.out.println(s); // 鹽值加密 System.out.println(Md5Crypt.md5Crypt("123456".getBytes())); System.out.println(Md5Crypt.md5Crypt("123456".getBytes(), "$1$qqqqqqqq")); // Spring 鹽值加密 BCryptPasswordEncoder bCryptPasswordEncoder = new BCryptPasswordEncoder(); //$2a$10$GT0TjB5YK5Vx77Y.2N7hkuYZtYAjZjMlE6NWGE2Aar/7pk/Rmhf8S //$2a$10$cR3lis5HQQsQSSh8/c3L3ujIILXkVYmlw28vLA39xz4mHDN/NBVUi String encode = bCryptPasswordEncoder.encode("123456"); boolean matches = bCryptPasswordEncoder.matches("123456", "$2a$10$GT0TjB5YK5Vx77Y.2N7hkuYZtYAjZjMlE6NWGE2Aar/7pk/Rmhf8S"); System.out.println(encode + "==>" + matches); }