一、前言
1、简单的登录验证可以通过Session或者Cookie实现。
2、每次登录的时候都要进数据库校验下账户名和密码,只是加了cookie 或session验证后;比如登录页面A,登录成功后进入页面B,若此时cookie过期,在页面B中新的请求url到页面c,系统会让它回到初始的登录页面。(类似单点登录sso(single sign on))。
3、另外,无论基于Session还是Cookie的登录验证,都需要对HandlerInteceptor进行配置,增加对URL的拦截过滤机制。
二、利用Cookie进行登录验证
1、配置拦截器代码如下:
public class CookiendSessionInterceptor implements HandlerInterceptor {@Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { log.debug("进入拦截器"); Cookie[] cookies = request.getCookies(); if(cookies!=null && cookies.length>0){ for(Cookie cookie:cookies) { log.debug("cookie===for遍历"+cookie.getName()); if (StringUtils.equalsIgnoreCase(cookie.getName(), "isLogin")) { log.debug("有cookie ---isLogin,并且cookie还没过期..."); //遍历cookie如果找到登录状态则返回true继续执行原来请求url到controller中的方法 return true; } } } log.debug("没有cookie-----cookie时间可能到期,重定向到登录页面后请重新登录。。。"); response.sendRedirect("index.html"); //返回false,不执行原来controller的方法 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 { }}
2、在Springboot中拦截的请求不管是配置监听器(定义一个类实现一个接口HttpSessionListener )、过滤器、拦截器,都要配置如下此类实现一个接口中的两个方法。
代码如下:
@Configuration public class WebConfig implements WebMvcConfigurer {// 这个方法是用