★学习目标:
1、掌握云借阅系统的登录验证
★思考任务:
1、登录验证的原理是什么?
★任务学习:
★知识要点:
1、登录验证的原理
虽然已经实现了用户登录功能,但此功能还并不完善。假设控制器类中也存在其他访问系统首页的方法,那么用户完全可以绕过登录步骤,而直接通过访问该方法进入系统后台首页。
为了避免此种情况的发生,提升系统的安全性,可以创建一个拦截器来拦截所有请求。当用户处于登录状态时,直接放行该用户的请求;如果用户没有登录,但是访问的是登录相关的请求,也放行;否则将请求转发到登录页面,并提示用户登录。
拦截器的执行流程图:

2、实现登录验证
步骤1:创建登录拦截器类:在项目的src\main\java目录下,创建一个com.itheima.interceptor包,并在包中创建登录拦截器类ResourcesInterceptor,用于对用户访问进行拦截控制
步骤2:配置拦截器:在SpringMvcConfig配置类中重写addInterceptors()方法,将自定义的资源拦截器添加到拦截器注册类中,重写的addInterceptors()方法具体代码如下所示。
/ 在拦截器注册类中添加自定义拦截器。addPathPatterns()方法设置
// 拦截的路径;excludePathPatterns()方法设置不拦截的路径
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor( new ResourcesInterceptor())
.addPathPatterns("/**")
.excludePathPatterns("/css/**","/js/**","/img/**");
}
步骤3:查看运行结果:启动cloudlibrary项目,不进行用户登录,直接访问跳转到系统后台页面的地址http://localhost:8080/cloudlibrary/toMainPage,页面跳转如图所示。

从图中可以看出,未登录的用户直接执行访问控制器方法后,并没有成功跳转到系统后台首页,而是转发到了系统登录页面,同时在登录页面中也给出了用户未登录的提示信息。这表明用户登录验证功能已成功实现。

