web xml

  1. <filter>
  2.    <filter-name>DelegatingFilterProxy</filter-name>
  3.    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
  4.    <init-param>
  5.      <param-name>targetFilterLifecycle</param-name>
  6.      <param-value>true</param-value>
  7.    </init-param>
  8.    <init-param>
  9.      <param-name>targetBeanName</param-name>
  10.      <param-value>autoLoginfilter</param-value>
  11.    </init-param>
  12.  </filter>

配置自动扫描注解

  1. <context:component-scan base-package="cn.com.do1.important.filter" />

filter

  1. package cn.com.do1.important.filter;
  2. import cn.com.do1.component.common.util.ValidateUtil;
  3. import cn.com.do1.dqdp.core.DqdpAppContext;
  4. import cn.com.do1.important.service.IAuthService;
  5. import cn.com.do1.wechat.aes.AesException;
  6. import cn.com.do1.wechat.aes.WXBizMsgCrypt;
  7. import cn.com.do1.wechat.basic.WeChatReqsUTLCfg;
  8. import cn.com.do1.wechat.common.ConfKit;
  9. import cn.com.do1.wechat.common.RequestUtil;
  10. import cn.com.do1.wechat.common.Tools;
  11. import cn.com.do1.wechat.core.WeChatCore;
  12. import org.apache.struts2.ServletActionContext;
  13. import org.slf4j.Logger;
  14. import org.slf4j.LoggerFactory;
  15. import org.springframework.stereotype.Component;
  16. import org.springframework.web.context.WebApplicationContext;
  17. import org.springframework.web.context.support.WebApplicationContextUtils;
  18. import org.springframework.web.filter.OncePerRequestFilter;
  19. import javax.annotation.Resource;
  20. import javax.servlet.*;
  21. import javax.servlet.http.Cookie;
  22. import javax.servlet.http.HttpServletRequest;
  23. import javax.servlet.http.HttpServletResponse;
  24. import javax.servlet.http.HttpSession;
  25. import java.io.IOException;
  26. import java.net.CookieManager;
  27. import java.util.HashMap;
  28. import java.util.Map;
  29. /**
  30. * 请求拦截
  31. *
  32. * @author ao.ouyang
  33. */
  34. @Component("autoLoginfilter")
  35. public class AutoLoginFilter extends OncePerRequestFilter {
  36.    private final Logger log = LoggerFactory.getLogger(AutoLoginFilter.class);
  37.    @Resource
  38.    private IAuthService authService;
  39.    @Override
  40.    protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
  41.        try {
  42.            HttpSession session = request.getSession(true);
  43.            String username = null;
  44.            String password = null;   // 此sessionid是上次用户登录时保存于用户端的识别码,用于用户后续访问的自动登录。不是本次访问的session id。
  45.            Cookie[] cookies;
  46.            // 如果session中没有user对象,则创建一个。
  47.            Map user = (Map) session.getAttribute("_user");
  48.            if (user == null) {
  49.                user = new HashMap(); // 此时user中的username属性为"",表示用户未登录。
  50.            }
  51.            // 如果user对象的username为"",表示用户未登录。则执行自动登录过程。
  52.            // 否则不自动登录。
  53.            if (ValidateUtil.isNullOrBlank(user.get("USER_NAME"))) {
  54.                cookies = request.getCookies();
  55.                for (Cookie cookie : cookies){
  56.                    if(cookie.getName().equalsIgnoreCase("SESSION_LOGIN_USERNAME")){
  57.                        username = cookie.getValue();
  58.                    }
  59.                    if(cookie.getName().equalsIgnoreCase("SESSION_LOGIN_PASSWORD")){
  60.                        password = cookie.getValue();
  61.                    }
  62.                }
  63.                if(!ValidateUtil.isNullOrBlank(username) && !ValidateUtil.isNullOrBlank(password)){
  64.                    if(authService.validUser(username,password).equalsIgnoreCase("successful")){
  65.                        user = authService.viewPersonByUserName(username);
  66.                        authService.updateUserLog(user);
  67.                        ServletActionContext.getRequest().getSession().setAttribute("_user", user);
  68.                    }
  69.                }
  70.            }
  71.        }catch (Exception e){
  72.            log.error(e.getMessage(),e);
  73.        }
  74.    }
  75. }

spring filter 配置的更多相关文章

  1. Spring Boot 2 使用Servlet、Listener和Filter配置

    开发环境:IntelliJ IDEA 2019.2.2Spring Boot版本:2.1.8 新建一个名称为demo的Spring Boot项目. 一.使用Servlet配置 1.修改启动类 Demo ...

  2. spring filter过滤器

    1.简介 Filter也称之为过滤器,它是Servlet技术中最实用的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 ...

  3. springMVC用法 以及一个简单的基于springMVC hibernate spring的配置

    替代struts 1  web.xml中配置springmvc中央控制器 <?xml version="1.0" encoding="UTF-8"?> ...

  4. spring filter lister servlet

    https://blog.csdn.net/nacey5201/article/details/8547772 https://blog.csdn.net/xwl617756974/article/d ...

  5. spring boot 之 spring security 配置

    Spring Security简介 之前项目都是用shiro,但是时过境迁,spring security变得越来越流行.spring security的前身是Acegi, acegi 我也玩过,那都 ...

  6. 最小可用 Spring MVC 配置

    [最小可用 Spring MVC 配置] 1.导入有概率用到的JAR包, -> pom.xml 的更佳实践 - 1.0 <- <project xmlns="http:// ...

  7. spring下配置shiro

    1.web.xml中加入shiro的过滤器: <!-- Spring --> <!-- 配置Spring配置文件路径 --> <context-param> < ...

  8. Tomcat配置和Spring MVC配置

    Tomcat启动时,先找系统变量CATALINA_BASE,如果没有,则找CATALINA_HOME.然后找这个变量所指的目录下的conf文件夹,从中读取配置文件.最重要的配置文件:server.xm ...

  9. Spring Boot配置过滤器的两种方式

    过滤器(Filter)是Servlet中常用的技术,可以实现用户在访问某个目标资源之前,对访问的请求和响应进行拦截,常用的场景有登录校验.权限控制.敏感词过滤等,下面介绍下Spring Boot配置过 ...

随机推荐

  1. c语言之函数参数传递之数组篇(转)

    在VC中写程序都习惯了,一般数组作为函数实参时,最常用的方法就是引用和指针的方法,但是到C语言中就没有引用了,还有一种比较常用的方法: #include <stdio.h>void sor ...

  2. React(0.13) 利用componentDidMount 方法设置一个定时器

    <html> <head> <title>hello world React.js</title> <script src="build ...

  3. JQuery UI datepicker 使用方法(转)

    官方地址:http://docs.jquery.com/UI/Datepicker,官方示例: http://jqueryui.com/demos/datepicker/. 一个不错的地址,用来DIY ...

  4. 安卓PopupWindow+ListView实现登录账号选择下拉框

    这段时间在做android开发,发现自定义下拉框有很多种方法实现,我介绍一种PopupWindow+ListView的方式,实现起来比较灵活.效果: 直接看核心代码: //获取文本框 etLoginN ...

  5. MySQL Sleep进程

    MySQL中查询当前的连接数: mysql> show status like '%Threads_connected%'; +-------------------+-------+ | Va ...

  6. Easyui 中 Tabsr的常用方法

    注:index必须为变量 tab页从0开始 //新增一个tab页var index = 0;$('#tt').tabs('add',{ title: 'Tab'+index, content: '&l ...

  7. pdm画表间结构

    PDM(物理概念模型)各种属性建立如PK,AK等 https://blog.csdn.net/qq_27376871/article/details/51321609 CDM: ER图详细教程 通常在 ...

  8. Android数据库安全解决方案,使用SQLCipher

    源码:http://files.cnblogs.com/android100/SQLCipherTest.rar 我们都知道,Android系统内置了SQLite数据库,并且提供了一整套的API用于对 ...

  9. C#基础第一天-作业

    1.从键盘上输入三个数,用if语句和逻辑表达式把最大数找出来.2.从键盘上输入三个数,用if语句和逻辑表达式把最小数找出来.3.输入一个成绩(0-100),然后用if else语句判断该成绩是优.良. ...

  10. 小程序踩过的一个小坑---解析二维码decodeURIComponent() url解码

    因为我们需要用户扫码进入小程序,每一个货柜都有一个对应的二维码,当然每个二维码里的信息也不一样.用户扫码进入小程序之后,二维码的信息会以参数q带进去,而我们只能在onLoad事件中拿到这个参数, 但是 ...