创建登录拦截类
@Component
@Slf4j
public class LoginInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
Emp emp = (Emp) request.getSession().getAttribute("emp");
log.error("emp:{}",emp);
if (ObjectUtils.isEmpty(emp)){
return unLoginHandler(response);
}
return true;
}
@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 {
}
private boolean unLoginHandler(HttpServletResponse response) throws Exception{
response.setContentType("application/json;charset=UTF-8");
response.getWriter().println(JSON.toJSON(R.error(Code.NOT_LOGGED_IN)));
return false;
}
}
完成登录拦截Web配置
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Bean
public LoginInterceptor getLoginInterceptor() {
return new LoginInterceptor();
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(getLoginInterceptor())
.addPathPatterns("/**")
.excludePathPatterns("/demo/login");
}
}
登录controller
@Slf4j
@RestController
@RequestMapping("/demo")
public class DemoController {
@PostMapping("/login")
public R<Emp> login(@RequestBody Emp emp, HttpServletRequest request){
request.getSession().setAttribute("emp",emp);
return R.success(Code.LOGIN,emp);
}
}