1. 程式人生 > 其它 >13.認證服務-登入註冊功能

13.認證服務-登入註冊功能

一、引數校驗補充

通過註解可以給前端傳遞過來的值進行校驗,例如:

但是這個註解必須配合 @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);
}