当前位置:   article > 正文

springmvc 登录鉴权过滤器_springmvc 鉴权

springmvc 鉴权
  1. package com.common.filter;
  2. import java.io.IOException;
  3. import javax.servlet.FilterChain;
  4. import javax.servlet.ServletException;
  5. import javax.servlet.http.HttpServletRequest;
  6. import javax.servlet.http.HttpServletResponse;
  7. import org.springframework.http.HttpStatus;
  8. import org.springframework.web.filter.OncePerRequestFilter;
  9. import com.common.util.SessionKeyContent;
  10. /**
  11. * 登录过滤器
  12. * <功能详细描述>
  13. *
  14. * @author chenlujun
  15. * @version [版本号, 2014年10月11日]
  16. * @see [相关类/方法]
  17. * @since [产品/模块版本]
  18. */
  19. public class SessionFilter extends OncePerRequestFilter
  20. {
  21. /** 登录验证过滤器 */
  22. @Override
  23. protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
  24. throws ServletException, IOException
  25. {
  26. // 不过滤的uri
  27. String[] notFilter =
  28. new String[] {"/images", "/js", "/css", "/login/tologin", "/login/mainframe", "/user/exist",
  29. "/user/checkPassword", "/signcode"};
  30. // 请求的uri
  31. String uri = request.getRequestURI();
  32. // 是否过滤
  33. boolean doFilter = true;
  34. for (String s : notFilter)
  35. {
  36. if (uri.indexOf(s) != -1)
  37. {
  38. // 如果uri中包含不过滤的uri,则不进行过滤
  39. doFilter = false;
  40. break;
  41. }
  42. }
  43. if (doFilter)
  44. {
  45. // 执行过滤
  46. // 从session中获取登录者实体
  47. Object obj = request.getSession().getAttribute(SessionKeyContent.SESSION_KEY_OBJ_USER_BEAN);
  48. if (null == obj)
  49. {
  50. boolean isAjaxRequest = isAjaxRequest(request);
  51. if (isAjaxRequest)
  52. {
  53. response.setCharacterEncoding("UTF-8");
  54. response.sendError(HttpStatus.UNAUTHORIZED.value(), "您已经太长时间没有操作,请刷新页面");
  55. return ;
  56. }
  57. response.sendRedirect("../login/tologin");
  58. return;
  59. }
  60. else
  61. {
  62. // 如果session中存在登录者实体,则继续
  63. filterChain.doFilter(request, response);
  64. }
  65. }
  66. else
  67. {
  68. // 如果不执行过滤,则继续
  69. filterChain.doFilter(request, response);
  70. }
  71. }
  72. /** 判断是否为Ajax请求
  73. * <功能详细描述>
  74. * @param request
  75. * @return 是true, 否false
  76. * @see [类、类#方法、类#成员]
  77. */
  78. public static boolean isAjaxRequest(HttpServletRequest request)
  79. {
  80. String header = request.getHeader("X-Requested-With");
  81. if (header != null && "XMLHttpRequest".equals(header))
  82. return true;
  83. else
  84. return false;
  85. }
  86. }

web.xml中配置

  1. <filter>
  2. <filter-name>sessionFilter</filter-name>
  3. <filter-class>com.common.filter.SessionFilter</filter-class>
  4. </filter>
  5. <filter-mapping>
  6. <filter-name>sessionFilter</filter-name>
  7. <url-pattern>/*</url-pattern>
  8. </filter-mapping>



声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号