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);
}

 

posted @ 2022-03-17 11:28  随遇而安==  阅读(121)  评论(0编辑  收藏  举报