SpringBoot拦截器的使用
新建类继承HandlerInterceptor
//拦截器
public class LoginHandlerInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//登录成功后应该有用户的session
Object loginUser =request.getSession().getAttribute("newUser");
//token
String token =request.getHeader("token");
if(loginUser ==null){
request.setAttribute("msg","没有权限,请先登录");
//请求转发
request.getRequestDispatcher("/index.html").forward(request,response);
}
return true;
}
}
拦截器在自定义视图中使用
@Configuration
public class MyMvcConfig implements WebMvcConfigurer {
//拦截器
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LoginHandlerInterceptor())
.addPathPatterns("/**")
.excludePathPatterns("/index.html","/","/user/login","/css/**","/js/**");
}
}
第二种在自定义视图使用
/**
* 配置(拦截器)
* @author hs
* @date 2021/8/11
*/
@Configuration
public class WebAuthConfig extends WebMvcConfigurationSupport {
@Resource
private AuthInterceptor authInterceptor;
@Override
protected void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(authInterceptor).addPathPatterns("/**");
}
}
本文介绍了如何在SpringBoot中使用拦截器进行登录验证。通过创建LoginHandlerInterceptor类并重写preHandle方法,检查session中的登录用户信息和请求头中的token。在自定义视图配置中,将拦截器添加到InterceptorRegistry中,设置拦截路径并排除特定URL,确保只有已登录用户才能访问特定资源。
984

被折叠的 条评论
为什么被折叠?



