HandlerInterceptor 判断用户是否登录
时间: 2023-08-11 18:41:56 浏览: 46
HandlerInterceptor可以用于拦截Controller请求,可以在请求处理之前或之后添加一些额外的处理逻辑,例如判断用户是否登录。以下是一个实现判断用户是否登录的HandlerInterceptor示例:
```java
public class LoginInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
HttpSession session = request.getSession();
// 判断用户是否已登录,如果已登录则放行
if (session.getAttribute("user") != null) {
return true;
}
// 如果用户未登录,则跳转到登录页面
response.sendRedirect(request.getContextPath() + "/login");
return false;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
}
}
```
在上述代码中,preHandle方法会在请求处理之前被调用,可以在该方法中获取当前用户的登录状态,如果未登录则重定向到登录页面,否则放行请求。这样就可以通过HandlerInterceptor来判断用户是否登录了。需要注意的是,除了preHandle方法外,还有两个方法postHandle和afterCompletion,它们分别在请求处理之后和视图渲染之后被调用,可以在这两个方法中添加一些额外的处理逻辑。