想要实现自动登录,需要通过Cookie保存用户名密码在客户端,然后通过过滤器拦截请求,对于未登录而带有自动登录cookie且自动登录cookie中保存的用户名密码都正确则在放行资源之前做自动登录操作。

package cn.bingou.filter;import java.io.IOException;
import java.net.URLDecoder;import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;import cn.bingou.domain.User;
import cn.bingou.exception.MsgException;
import cn.bingou.factory.BaseFactory;
import cn.bingou.service.UserService;public class AutoLoginFilter implements Filter {private String encode=null;@Overridepublic void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {HttpServletRequest req=(HttpServletRequest) request;// 1.用户没有登陆HttpSession session=req.getSession(false);if(session==null || session.getAttribute("user")==null){Cookie[] cs=req.getCookies();Cookie findC=null;if(cs!=null){for(Cookie c:cs){if("autologin".equals(c.getName())){findC=c;break;}}}// 2.用户携带了自动登录的Cookieif(findC!=null){// 3.自动登陆Cookie中保存的用户名和密码正确String value=findC.getValue(); // username#passwordString username=URLDecoder.decode(value.split("#")[0], encode);String password=value.split("#")[1];UserService service=BaseFactory.getFactory().getInstance(UserService.class);try {User user=service.login(username, password);// 以上3点都符合,再进行自动登陆 -> 将用户的信息存入sessionif(user!=null){// 实现自动登陆 -> session中现在已经有用户的登陆状态// session.setAttribute("user",user); // 空指针req.getSession().setAttribute("user", user);}} catch (MsgException e) {e.printStackTrace();}}}// 放行请求
        chain.doFilter(request, response);}@Overridepublic void init(FilterConfig filterConfig) throws ServletException {this.encode=filterConfig.getServletContext().getInitParameter("encode");}@Overridepublic void destroy() {// TODO Auto-generated method stub
}
}

  <!-- 配置过滤器 --><filter><filter-name>AutoLoginFilter</filter-name><filter-class>cn.bingou.filter.AutoLoginFilter</filter-class></filter><!-- 配置过滤器拦截的url --><filter-mapping><filter-name>AutoLoginFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>

转载于:https://www.cnblogs.com/chuijingjing/p/9813152.html

12.30天自动登陆相关推荐

  1. FreePBX 12 SIP协议30分钟自动挂断问题处理

    FreePBX 12 SIP协议30分钟自动挂断问题处理 问题: SIP每次通话几乎恰好在 30 分钟左右掉线,而IAX协议并没有这个问题. 解决方案: 登录管理后台找到Settings =>A ...

  2. Linux多台服务器共用密钥ssh自动登陆

    linux的秘钥产生与服务器无关,只和加密的方式(采用rsa或dsa)还有passphrase(密码短语,在生成秘钥的时候输入)有关. 如果是这样,同一对秘钥可以使用在多台服务器上,因为对于服务器和客 ...

  3. ASP.NET -- WebForm -- Cookie的使用 应用程序权限设计 权限设计文章汇总 asp.net后台管理系统-登陆模块-是否自动登陆 C# 读写文件摘要...

    ASP.NET -- WebForm -- Cookie的使用 ASP.NET -- WebForm --  Cookie的使用 Cookie是存在浏览器内存或磁盘上. 1. Test3.aspx文件 ...

  4. curl模拟自动登陆采集网页数据

    <!DOCTYPE> <html> <head> <meta http-equiv="Content-Type" content=&quo ...

  5. selenium自动登陆校园网wifi(含验证码处理)

    每次登陆川农wifi都要输入密码,账号,验证码.好麻烦有木有,作为一个伪技术工作者,本着装逼的原则,准备自己写个脚本自动登陆wifi,川农校园wifi验证码简单,随便处理下识别率几乎百分百,脚本实用性 ...

  6. Android webview 自动登陆新浪微博实现(原理)

    小弟 在登陆的时候进行抓包.但是没抓到····· ( 一定是我方法不对).后面没办法了,想了很久我们WEB上面可以进行模拟用户操作 ,下面是我总结出来的方法. 如有不足.请大牛指点.     小弟在此 ...

  7. 使用 图灵验证码识别平台+Python+Selenium,智能识别B站/bilibili的中文验证码,并实现自动登陆

    一直想用python写一个程序帮我自动登陆B站,完成一些点击任务,懂的都懂 =v= 最近终于腾出时间来搞了,其实最难的部分就是中文验证码的识别.这个借助API接口也能轻松搞定.下面分享一下全部源码(前 ...

  8. 使用Python+Selenium+图灵验证码识别平台,识别B站/bilibili的中文验证码,并自动登陆B站

    一直想用python写一个程序帮我自动登陆B站,完成一些点击任务,懂的都懂 =v= 最近终于腾出时间来搞了,其实最难的部分就是中文验证码的识别.这个借助API接口也能轻松搞定.下面分享一下全部源码(前 ...

  9. 如何取消OneDriver自动登陆并删除已经同步数据?

    如何取消OneDriver自动登陆并删除已经同步数据? ©Lander Zhang 专注外企按需IT基础架构运维服务,IT Helpdesk 实战培训践行者 https://blog.51cto.co ...

  10. Python模拟登录,Python识别图形验证码实现自动登陆

    前言 利用Python识别图形验证码,selenium模块实现自动登陆.废话不多说. 让我们愉快地开始吧~ 开发工具 Python版本: 3.6.4 相关模块: re: numpy模块: pytess ...

最新文章

  1. CUDA Pro:通过向量化内存访问提高性能
  2. 无线路由器打印机服务器设置密码,路由器怎么设置打印机服务器设置
  3. 谷歌、OpenAI等警告:BERT、GPT-3等大型语言模型都有一个重大缺陷,很危险...
  4. python 仪表盘-python数据可视化:pyecharts
  5. 请大家访问另一个我的博客!
  6. 正确认识自己,把自己摆正位置
  7. 产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复
  8. TypeScript里数组foreach和map操作的区别
  9. php面向对象引用文件,PHP面向对象之对象和引用
  10. java manager 如何使用_java - Android:如何使用AlarmManager
  11. MYSQL - database 以及 table 的增删改查
  12. CrazyWing:Python自动化运维开发实战 七、Python数据类型之数字
  13. 基于大数据的智慧旅游数据分析系统
  14. 阿里云天气汇率API代码片段
  15. 空间频率(lp/mm,cycles/mm,lp/mrad,cycles/mrad)
  16. 雷达系统概述--距离分辨率
  17. 【OpenCV--角点特征】
  18. JSP 登陆系统 登陆界面/处理界面/成功界面/失败界面/注销界面(无数据库版) 包含源文件分享
  19. 自己写操作系统学习总结
  20. 华为手机提示 系统发现xxx删除照片提示 如何不提示,且不保存在最近删除列表

热门文章

  1. Macbook Pro 自定义 Touchbar 教程,让 Touchbar 顺应你的脾气
  2. 苹果华为齐发力AI 人工智能手机时代来了
  3. 数据处理的神来之笔 解决缓存击穿的终极利器
  4. 升级mac系统正在计算机,Mac升级卡死解决办法
  5. Linux 下安装 Wordpress教程
  6. 一文读懂ICO、IFO、IMO、IEO的区别,或许是全网最全科普
  7. 8K慢直播时代下的茶旅发展
  8. python如何编写温度转换_Python温度转换实例分析
  9. c++:简单的运算符重载
  10. C++学习(一五九)Qt的场景图Scene Graph