课程四

注册、登录、浏览Interceptor、未跳转登录、数据安全性

注册:

  输入参数(String username, String password, boolean rememberme)

  首先对参数进行判断,用户名如果为空,返回对应的信息,密码如果为空,返回对应的信息,再去数据库中查找用户名如果被注册,返回对应的信息,如果没有被都符合,新建User,设置salt,将password + slat 进行MD5加密,

  最后再添加ticket,ticket与userId绑定,ticket是一段字符串,设置有效期限,设置状态(0正常,1失效)。返回包含ticket的map,在controller中会对Cookie进行设置,添加新的ticket,设置Cookie有效期

浏览Interceptor(passportInterceptor):preHandle里对用户进行辨识,如果当前请求没有包含ticket,或者ticket过期,preHandle里不会进行处理,如果懈怠了有效的ticket(ticket没有过期,状态为0),会将当前ticket对应的user信息添加到                      hostHolder中,hostHolder是包装了ThreadLocal类的一个类,包含的是user用户信息。                                                                                                                                                                                                                                                          postHandle方法中如果hostHolder中包含了用户信息,会加入到ModelAndView中,让前端进行渲染。                                                                                                                                                                                                                   afterCompletion方法中,会将hostHolder中的用户信息移除。

未跳转登录(loginRequiredInterceptor): 当用户浏览需要登录的界面时,会跳出拦截器进行判断,在preHandle中判断当前hostHolder中是否有用户信息,如果没有,使用httpServletResponse.sendRedirect方法直接跳转到登录页面,next参数为当前页面的URI。

                       如果有用户信息,则不进行任何操作。

拦截器需要注册  继承WebMvcConfigurerAdapter重写addInterceptors(InterceptorRegistry registery)方法,register.add(passportInterceptor),register.add(loginRequiredInterceptor).addPathPatterns(“/user/*”);

posted @ 2019-03-20 11:50  开发小拉拉  阅读(104)  评论(0编辑  收藏  举报