登录验证
@ApiOperation(value="用户登录验证",notes = "用户登录验证")
@RequestMapping("loginUser")
public String getUsers(String username,String password,HttpServletRequest request) {
Enumeration<String> header = request.getHeaderNames();
String flag = "";
try {
if(StringUtils.isEmpty(username) || StringUtils.isEmpty(password)) {
flag = "用户名或者密码为空";
return "redirect:"+"login";
}
User user = userService.findByUsername(username, password);
if(user != null){
HttpSession session = request.getSession();
session.setAttribute("user", user);
return "index";
}else{
flag = "用户名或者密码错误";
request.setAttribute("flag",flag);
return "login";
}
} catch (Exception e) {
e.printStackTrace();
}
return flag;
}
定义拦截器
@Controller
@Component
public class LoginInterceptor extends HandlerInterceptorAdapter {
Logger log = Logger.getLogger(LoginInterceptor.class);
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
String basePath = request.getContextPath();
String path = request.getRequestURI();
if(!doLoginInterceptor(path, basePath) ){
return true;
}
HttpSession session = request.getSession();
User users = (User) session.getAttribute("user");
if(users==null){
String requestType = request.getHeader("X-Requested-With");
if(requestType!=null && requestType.equals("XMLHttpRequest")){
response.setHeader("sessionstatus","timeout");
response.getWriter().print("LoginTimeout");
response.sendRedirect(request.getContextPath() + "login");
return false;
} else {
log.info("尚未登录,跳转到登录界面");
}
return false;
}
return true;
}
private boolean doLoginInterceptor(String path,String basePath){
path = path.substring(basePath.length());
Set<String> notLoginPaths = new HashSet<>();
notLoginPaths.add("/loginUser");
notLoginPaths.add("/login");
if(notLoginPaths.contains(path)) return false;
return true;
}
}
自定义拦截规则
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Autowired
LoginInterceptor loginInterceptor;
final String[] notLoginInterceptPaths = {"/login","loginUser","/pages/**","/**/*.css", "/**/*.js", "/**/*.png", "/**/*.jpg", "/**/*.jpeg", "/*.html", "/**/*.html","/swagger-resources/**"};
@Override
public void addInterceptors(InterceptorRegistry registry) {
// 日志拦截器
//registry.addInterceptor(logInterceptor).addPathPatterns("/**");
// 登录拦截器
registry.addInterceptor(loginInterceptor).addPathPatterns("/**").excludePathPatterns(notLoginInterceptPaths);
}
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
/**
* 设置默认登录页面
*/
@Override
public void addViewControllers(ViewControllerRegistry registry) {
}
}