100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 使用Filter过滤器自动登录功能

使用Filter过滤器自动登录功能

时间:2022-01-20 08:34:49

相关推荐

使用Filter过滤器自动登录功能

实现思路

1.首先判断是否勾选了自动登录按钮(LoginServlet文件中进行判断)

2.在LoginServlet 创建一个cookie 将用户的登录账号与密码保存到其中 ,存到客户端

3.返回到前端页面

4.在访问目标资源前 写一个filter (AutoLoginFilter) 在filter文件中获取到cookie中的值,根据值连接数据库(再次登录) 并将user对象存到session中

具体实现

1.前端页面中存在一个checkbox 如需自动登录 将其勾选上

<input type="checkbox" name="autologin" value="autologin"/>

2.在LoginServlet中 对其进行判断(前期是第一次登录成功 其返回不为空)

//第一次登录成功 则后续才进行判断 user为调用登录返回的数据if(user!=null){//判读是否勾选自动登录String autologin= request.getParameter("autologin");if(autologin!=null){//勾选了则创建一个cookie 将账号密码保存到其中Cookie userid=new Cookie("userid",user.getUserid());Cookie password=new Cookie("password",user.getPassword());//给cookie设置持续化时间password.setMaxAge(60*60);userid.setMaxAge(60*60);//设置路径userid.setPath(reuqest.getContextPath());password.setPath(reuqest.getContextPath())//将cookie发送到客户端response.addCookie(userid);response.addCookie(password);}}

后续需要创建一个filter过滤器 让其可以自动登录(勾选Lee自动登录按钮)

新建一个class AutoLoginFilter 实现Filter接口 重写方法 (只需处理doFliter方法)

dofilter 方法中的代码

//获取cookie中的用户id与登录密码Cookie []cookies=request.getCookies();String cookie_userid=NULL;String cookie_password=NULL;//创建一个新的session对象HttpSession session=request.getSession();//判断其是否为空 当没勾选自动时,cookie为空if(cookies!=null){//通过for循环拿到其中的数据for(Cookie cookie:cookies){//获取之前存入到cookie中的值if(cookie.getName().equals("userid")){cookie_userid=cookie.getValue();}if(cookie.getName().equals("password")){cookie_password=cookie.getValue();}}}//判断cookie中是否为nullif(cookie_userid!=null&& cookie_password!=null){//调用登录方法 参数有一点修改UserService us=new UserService();User user=null;user= us.login(cookie_userid, cookie_password);//再将user对象放置到session中session.setAttribute("user",user);//最最最最重要的一点将其放行chain(request,response);}

在web.xml文件中配置fliter参数

<filter><filter-name>AutoLoginFilter</filter-name><filter-class>com.hnoracle.tfwp.filiter.AutoLoginFilter</filter-class></filter><filter-mapping><filter-name>AutoLoginFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。