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

网友投稿 299 2022-09-02


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

目录登录接口实现拦截器类代码实现配置文件实现

登录接口实现

public User queryUser(String UserName, String Password,HttpServletRequest request, HttpServletResponse response) {

User user = userMapper.queryUser(UserName,Password);

if(!StringUtils.isEmpty(user)){

//1.获取session

HttpSession session = request.getSession();

//2.获取sessionid

String sessionId = session.getId();

//3.将sessionid作为key,用户信息user作为value,放入session中

session.setAttribute(sessionId,user);

//4.将sessionId存到cookie中,"jsESSIONID"为自定义的key值

Cookie cookie = new Cookie("JSESSIONID",sessionId);

//5.设置cookie的有效路径

cookie.setPath(request.getContextPath());

//6.将cookie返回给页面

response.addCookie(cookie);

}

return user;

}

代码思路:

1.用户输入账号密码登录成功后获取用户信息(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信息,如下图。

拦截器类代码实现

public class Filter extendshttp:// HandlerInterceptorAdapter {

private static Logger logger = Logger.getLogger(Filter.class);

/**

* 进入拦截器后首先进入的方法

* 返回false则不再继续执行

* 返回true则继续执行

*/

@Override

public boolean preHandle(HttpServletRequest request,

HttpServletResponse response, Object handler)throws Exception

{

//1.定义sessionid变量

String sessionid = "";

//2.获取session对象

HttpSession session=request.getSession();

//3.获取页面上所有的cookie

Cookie[] cookies = request.getCookies();

//4.循环寻找名称为"JSESSIONID"的cookie

for(Cookie cookie:cookiZZKltjBvmes){

if(cookie.getName().equals("JSESSIONID")){

sessionid = cookie.getValue();

}

}

//5.根据sessionid获取用户信息

User user = (User) session.getAttribute(sessionid);

if(StringUtils.isEmpty(user)) {

logger.info("用户未登录");

//用户未登录跳转到登录页面

response.sendRedirect("login"http://);

return false;

}

logger.info("用户已登录");

return true;

}

}

代码思路:

1.自定义一个拦截器类,首先要继承HandlerInterceptorAdapter,并重写preHandle方法,在此方法中编写拦截器的逻辑代码

2.获取cookies数组,这个数组有浏览器中的所有cookies信息,循环遍历找到name为"JSESSIONID"的cookies,并获取到其value值,这个值就是sessionid

3.通过sessionid查找user对象,如果能获取对象证明登录过,如果不能获取到对象证明没有登录过

4.如果登录过就直接访问接口,如果没有登录过就跳转到登录页面进行登录

配置文件实现

<mvc:interceptor>

配置含义:

1.我们使用拦截器肯定要规定拦截哪些接口,首先我们将所有的接口都拦截

2.然后我们发现问题,此时登录接口也在拦截范围中,所以我们正常调用登录接口之前他也会拦截判断一下用户是否登录过,这个时候用户肯定没有登录过,那么就会又跳转到登录界面,我们再次登录还是跳转到登录页面,一直登录不上,所以我们需要把登录接口配置为不拦截

3.然后我们指定我们配置好的拦截器类路径,这个时候可以在该类中进行登录验证操作了

4.此配置文件为spring-mvc.xml配置文件


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Python面试题之回调函数
下一篇:Python面试题之Python中的类和实例(python编程面试题库)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~