文章介绍了如何在SpringMVC中创建自定义登录拦截器,通过实现HandlerInterceptor接口,包括preHandle、postHandle和afterCompletion三个方法,用于权限验证。当用户未登录尝试访问受限资源时,拦截器会将请求重定向到登录页面。同时,文章还展示了在前端页面如何显示拦截信息。 摘要由CSDN通过智能技术生成 SpringMVC的拦截器 与 JavaServlet的过滤器 类似,它主要用于拦截用户的请求并做相应的处理,通常应用于权限认证(保护服务器资源 )、记录请求信息的日志、判断用户是否登录等功能。 自定义登录拦截器 一、创建一个类并实现HandlerInterceptor接口,这个接口包含了三个方法:preHandle、postHandle和afterCompletion。 boolean preHandle() 方法: 在请求到达目标资源或controller之前执行。当该方法返回值为true时,则允许请求到达目标资源或下一拦截器。当方法返回值为false时,则阻止请求继续访问。 void postHandle()方法: 该方法在请求到达目标资源或controller执行完成以后执行,前提是, boolean preHandle() 方法返回值为true。 void afterCompletion方法: 该方法在服务器渲染页面以后执行,前提是 boolean preHandle() 方法返回值为true。 //util类 @Component public class LoginInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //从session中 取出 登录用户 Object user = request.getSession().getAttribute("loginUser"); if(user!=null){ return true; } /**重定向到 登录页面 */ response.sendRedirect("/login.html?info=noland"); return false; } } 二、注册拦截器类,重写addInterceptors方法 //config类 @Configuration public class WebConfig implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry registry) { //注册自定义拦截器 registry.addInterceptor(new LoginInterceptor()) //路径匹配 受限资源拦截范围 访问该范围资源就会被拦截(可以写多个) .addPathPatterns("/index.html"); } } 三、在登录页面显示拦截信息 window.onload = function () { let info = getQuery("info"); if(info=="noland"){ $("infoDiv").innerHTML = "请先登录"; } } |
|手机版|小黑屋|梦想之都-俊月星空
( 粤ICP备18056059号 )
GMT+8, 2025-2-22 16:42 , Processed in 0.024271 second(s), 17 queries .
Powered by Mxzdjyxk! X3.5
© 2001-2025 Discuz! Team.