一、登录时将用户信息设置进session
@RequestMapping("login")
public R login(Admin admin, HttpSession session){
Admin admin1 = adminServiceImpl.login(admin);
if (admin1 == null){
return R.error();
}else {
session.setAttribute("admin",admin1.getUsername());
session.setAttribute("adminId",admin1.getId());
return R.ok();
}
}
二、实现HandlerInterceptor拦截器
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class LoginHandlerInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
Object adminId = request.getSession().getAttribute("adminId");
if (adminId == null) {
request.setAttribute("msg", "无权限请先登录");
response.sendRedirect("/login.html");
return false;
} else {
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 {
}
}
三、实现WebMvcConfigurer接口
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class MyMvcConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LoginHandlerInterceptor())
.addPathPatterns("/**")
.excludePathPatterns("/","/admin/login", "/login.html", "/css/**", "/js/**", "/images/**","/fonts/**","/lib/**");
}
}