12.30天自动登陆
想要实现自动登录,需要通过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天自动登陆相关推荐
- FreePBX 12 SIP协议30分钟自动挂断问题处理
FreePBX 12 SIP协议30分钟自动挂断问题处理 问题: SIP每次通话几乎恰好在 30 分钟左右掉线,而IAX协议并没有这个问题. 解决方案: 登录管理后台找到Settings =>A ...
- Linux多台服务器共用密钥ssh自动登陆
linux的秘钥产生与服务器无关,只和加密的方式(采用rsa或dsa)还有passphrase(密码短语,在生成秘钥的时候输入)有关. 如果是这样,同一对秘钥可以使用在多台服务器上,因为对于服务器和客 ...
- ASP.NET -- WebForm -- Cookie的使用 应用程序权限设计 权限设计文章汇总 asp.net后台管理系统-登陆模块-是否自动登陆 C# 读写文件摘要...
ASP.NET -- WebForm -- Cookie的使用 ASP.NET -- WebForm -- Cookie的使用 Cookie是存在浏览器内存或磁盘上. 1. Test3.aspx文件 ...
- curl模拟自动登陆采集网页数据
<!DOCTYPE> <html> <head> <meta http-equiv="Content-Type" content=&quo ...
- selenium自动登陆校园网wifi(含验证码处理)
每次登陆川农wifi都要输入密码,账号,验证码.好麻烦有木有,作为一个伪技术工作者,本着装逼的原则,准备自己写个脚本自动登陆wifi,川农校园wifi验证码简单,随便处理下识别率几乎百分百,脚本实用性 ...
- Android webview 自动登陆新浪微博实现(原理)
小弟 在登陆的时候进行抓包.但是没抓到····· ( 一定是我方法不对).后面没办法了,想了很久我们WEB上面可以进行模拟用户操作 ,下面是我总结出来的方法. 如有不足.请大牛指点. 小弟在此 ...
- 使用 图灵验证码识别平台+Python+Selenium,智能识别B站/bilibili的中文验证码,并实现自动登陆
一直想用python写一个程序帮我自动登陆B站,完成一些点击任务,懂的都懂 =v= 最近终于腾出时间来搞了,其实最难的部分就是中文验证码的识别.这个借助API接口也能轻松搞定.下面分享一下全部源码(前 ...
- 使用Python+Selenium+图灵验证码识别平台,识别B站/bilibili的中文验证码,并自动登陆B站
一直想用python写一个程序帮我自动登陆B站,完成一些点击任务,懂的都懂 =v= 最近终于腾出时间来搞了,其实最难的部分就是中文验证码的识别.这个借助API接口也能轻松搞定.下面分享一下全部源码(前 ...
- 如何取消OneDriver自动登陆并删除已经同步数据?
如何取消OneDriver自动登陆并删除已经同步数据? ©Lander Zhang 专注外企按需IT基础架构运维服务,IT Helpdesk 实战培训践行者 https://blog.51cto.co ...
- Python模拟登录,Python识别图形验证码实现自动登陆
前言 利用Python识别图形验证码,selenium模块实现自动登陆.废话不多说. 让我们愉快地开始吧~ 开发工具 Python版本: 3.6.4 相关模块: re: numpy模块: pytess ...
最新文章
- CUDA Pro:通过向量化内存访问提高性能
- 无线路由器打印机服务器设置密码,路由器怎么设置打印机服务器设置
- 谷歌、OpenAI等警告:BERT、GPT-3等大型语言模型都有一个重大缺陷,很危险...
- python 仪表盘-python数据可视化:pyecharts
- 请大家访问另一个我的博客!
- 正确认识自己,把自己摆正位置
- 产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复
- TypeScript里数组foreach和map操作的区别
- php面向对象引用文件,PHP面向对象之对象和引用
- java manager 如何使用_java - Android:如何使用AlarmManager
- MYSQL - database 以及 table 的增删改查
- CrazyWing:Python自动化运维开发实战 七、Python数据类型之数字
- 基于大数据的智慧旅游数据分析系统
- 阿里云天气汇率API代码片段
- 空间频率(lp/mm,cycles/mm,lp/mrad,cycles/mrad)
- 雷达系统概述--距离分辨率
- 【OpenCV--角点特征】
- JSP 登陆系统 登陆界面/处理界面/成功界面/失败界面/注销界面(无数据库版) 包含源文件分享
- 自己写操作系统学习总结
- 华为手机提示 系统发现xxx删除照片提示 如何不提示,且不保存在最近删除列表