2.1 两次md5
记录:
客户端 code = MD5(salt + password)
数据库db 存MD5(salt + code)
两次md5加密
2.3 登录功能实现下
service层调用luserService…login() : userMobile作为id 调用server层getbyid找到对应的user对象
2.4 jsr303参数校验
依赖包:
org.springframework.boot
spring-boot-starter-validation
1、在需要参数校验的vo类参数前加入@Valid 注解
2、将对应的校验注解放在Vo类对应参数上。
自定义注解参数校验:
1、 自定义注解
在@Constraint(validatedBy = 指定参数执行校验的类
该类需要 实现ConstraintValidator<IsMobile, String>接口<使用该类的注解,被校验的字段类型>
重写initialize方法,获得该参数是否是required必填的。
重写isVaild方法,返回boolean,写参数校验逻辑。
2、该注解的成员 default指定该注解对应的错误提示信息。
2.5 自定义异常处理返回友好的参数
1、@ControllerAdvice 自定义接受异常类
@@ExceptionHandler(value=Exception.class) 接受异常的方法(这个方法接受所有异常,因为所有异常都是Excption的子类)
取第一个错误,设置绑定异常,用String.format填入相关的参数。
2、定义一个全局异常类,传入CodeMsg对的,用来直接向外抛出异常,抛出的异常被@controllerAdvice类接受处理。
2.6分布式session
多台应用服务器,一台服务器的redis专门保存token
生成token
1、uuid包,
2、new cookie生成设置过期时间,与redis的key的过期时间一致,设置作用域
3、response.addCookie(cookie) controller中的httpservletResponse自动填入参数。
获取token
1、controller 参数使用注解@CookieValue,获取指定名称的cookie 注入到参数
2、参数使用注解@requestParam获取指定名称的参数,注入到参数
2.7 分布式session cookie
通过每次访问重新设置cookie延长cookie的有效时间。
原来通过Userservice.getBytoken通过token获取user对象
改进:
@Configuration声明配置类 并且继承WebMvcConfigurerAdapter 重写 argumentResolver方法,add一个实现相关接口的类。