帮我写一个拦截器,未登录的用户返回登录界面
时间: 2024-05-15 15:14:46 浏览: 5
好的,我可以为您提供代码示例,实现未登录用户拦截并返回登录界面。以下是一个简单的示例:
```
// 实现一个拦截器类
public class AuthInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
HttpSession session = request.getSession();
// 判断用户是否登录
if (session.getAttribute("user") == null) {
// 未登录,重定向到登录页面
response.sendRedirect("/login");
return false;
}
// 已登录,继续执行下一个拦截器或请求处理器
return true;
}
}
// 在Web配置中注册拦截器
@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void addInterceptors(InterceptorRegistry registry) {
// 注册拦截器并指定拦截的URL模式
registry.addInterceptor(new AuthInterceptor()).addPathPatterns("/**").excludePathPatterns("/login");
}
}
```
在上述示例中,我们定义了一个名为AuthInterceptor的拦截器类,它实现了HandlerInterceptor接口,其中的preHandle方法用于在请求处理前进行拦截。在preHandle方法中,我们从请求中获取session,判断当前用户是否登录。如果未登录,则使用response对象重定向到登录页面,并返回false,表示此次拦截已完成。如果已登录,则返回true,表示继续执行下一个拦截器或请求处理器。
之后,我们在Web配置中注册了这个拦截器,并指定了拦截的URL模式。在这个示例中,我们将拦截所有URL,并且排除了/login这个URL,以便未登录用户能够访问登录页面。