当前位置: 首页 > 后端技术 > Java

SSM项目使用拦截器实现登录验证功能

时间:2023-04-01 23:35:49 Java

SSM项目使用拦截器实现登录验证功能。登录接口实现publicUserqueryUser(StringUserName,StringPassword,HttpServletRequestrequest,HttpServletResponseresponse){Useruser=userMapper.queryUser(UserName,Password);if(!StringUtils.isEmpty(user)){//1.获取会话HttpSessionsession=request.getSession();//2。获取会话IDStringsessionId=session.getId();//3。以sessionid为key,用户信息user为value,放入session中session.setAttribute(sessionId,user);//4。将sessionId保存在cookie中,"JSESSIONID"为自定义键值Cookiecookie=newCookie("JSESSIONID",sessionId);//5。设置cookie有效路径cookie.setPath(request.getContextPath());//6。返回cookie给页面response.addCookie(cookie);}返回用户;User)2.获取session,获取sessionid(注意:每个session对象都有一个sessionid)3.以sessionid为key,用户信息(User)为value,放入session中4.创建Cookie对象,设置“JSESSIONID”作为key,sessionId作为value,放入cookie中。5、设置cookie的有效路径,并将cookie返回给页面。此时页面可以接收到key为“JSESSIONID”,value为sessionId的cookie信息,如下图所示。拦截器类代码实现publicclassFilterextendsHandlerInterceptorAdapter{privatestaticLoggerlogger=Logger.getLogger(Filter.class);/***进入拦截器后第一个进入的方法*返回false停止执行*返回true继续执行*/@OverridepublicbooleanpreHandle(HttpServletRequestrequest,HttpServletResponseresponse,Objecthandler)throwsException{//1.定义sessionid变量Stringsessionid="";//2。获取会话对象HttpSessionsession=request.getSession();//3。获取页面所有cookieCookie[]cookies=request.getCookies();//4。循环查找名为“JSESSIONID”的cookiefor(Cookiecookie:cookies){if(cookie.getName().equals("JSESSIONID")){sessionid=cookie.getValue();}}//5。根据sessionid获取用户信息Useruser=(User)session.getAttribute(sessionid);if(StringUtils.isEmpty(user)){logger.info("用户未登录");//用户未登录,跳转到登录页面response.sendRedirect("login");返回假;}logger.info("用户已登录");返回真;}}代码思路:1、自定义一个拦截器类,首先继承HandlerInterceptorAdapter,并重写preHandle方法,将拦截器的逻辑代码写在该方法中2、获取cookies数组,该数组中有浏览器中所有的cookies信息,循环找到名称为“JSESSIONID”的cookie,并得到它的值,这个值就是sessionid3。通过sessionid找到用户对象,如果能拿到该对象证明你已经登录,如果拿不到该对象,证明你还没有登录。4.如果已经登录,可以直接访问界面。如果还没有登录,可以跳转到登录页面登录配置文件实现配置含义:1.我们在使用拦截器的时候,我们必须指定拦截哪些接口。首先,我们拦截所有接口。2.然后我们发现问题了,此时登录界面也在拦截范围内,所以在我们正常调用登录界面之前,它也会拦截判断用户是否已经登录,这时候用户肯定是没有登录,然后会再次跳转到登录界面,我们重新登录或者跳转到登录页面,但是不能一直登录,所以我们需要配置登录界面不拦截3.然后我们指定我们配置的拦截器类路径,然后我们就可以在这个类中进行登录验证操作了4.这个配置文件就是spring-mvc.xml配置文件