登录拦截
# 登录拦截
```java
public class UserLoginInterceptor implements HandlerInterceptor {
public static final ThreadLocal<MemberVO> USER_STATE = ThreadLocal.withInitial(MemberVO::new);
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
HttpSession session = request.getSession();
MemberVO user = (MemberVO) session.getAttribute(UserConstant.SESSION_USER_NAME);
if (user == null) { // 没有登录, 重定向到登录页
response.sendRedirect("http://auth.bitmall.com/login.html");
session.setAttribute("error_msg", "下订单之前必须登录");
return false;
}
// 登陆了
MemberVO memberVO = USER_STATE.get();
BeanUtils.copyProperties(user, memberVO);
return true;
}
}
```
```java
@Configuration
public class InterceptorConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new UserLoginInterceptor())
.addPathPatterns(
// 提交订单 // 确认页 // 支付
"/submitOrder", "/toTrade", "/toPay"
);
}
}
```