SpringBoot前后端分离项目登录拦截器怎么写
时间: 2024-05-16 11:13:53 浏览: 7
在Spring Boot前后端分离项目中,可以使用拦截器(Interceptor)来实现登录拦截的功能。
首先需要定义一个拦截器类,实现Spring的HandlerInterceptor接口。在拦截器类中,可以编写preHandle方法,该方法在请求处理之前被调用。在该方法中,可以获取当前请求的session,判断用户是否已经登录。
代码示例:
```
public class LoginInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
HttpSession session = request.getSession();
Object obj = session.getAttribute("user");
if (obj == null) {
response.sendRedirect("/login"); // 未登录,跳转到登录页面
return false;
}
return true;
}
}
```
在Spring Boot应用中,需要将拦截器注册到拦截器链中。可以在WebMvcConfigurer中配置拦截器:
```
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Autowired
private LoginInterceptor loginInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(loginInterceptor).addPathPatterns("/**").excludePathPatterns("/login", "/logout", "/css/**", "/js/**", "/img/**"); // 拦截所有请求,除了登录、登出和静态资源
}
}
```
在上述代码中,拦截器注册到了所有请求中(除了登录、登出和静态资源),在preHandle方法中,判断用户是否已经登录,如果未登录,则重定向到登录页面。
需要注意的是,拦截器只能拦截Controller层的请求,对于静态资源的请求,需要在addPathPatterns中排除掉。