java如何使用过滤器实现登录拦截处理
发表于:2025-02-10 作者:千家信息网编辑
千家信息网最后更新 2025年02月10日,这篇文章主要介绍了java如何使用过滤器实现登录拦截处理,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。滤器实现登录拦截处理一、什么是过
千家信息网最后更新 2025年02月10日java如何使用过滤器实现登录拦截处理
这篇文章主要介绍了java如何使用过滤器实现登录拦截处理,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
滤器实现登录拦截处理
一、什么是过滤器
过滤器是处于客户端与服务器资源文件之间的一道过滤网(驻留在服务器端的Web组件),在访问资源文件之前,通过一系列的过滤器对请求进行修改、判断等,把不符合规则的请求在中途拦截或修改。也可以对响应进行过滤,拦截或修改响应
二、工作原理及生命周期
举个例子 当我们登录系统可以访问到页面,当退出登录后,要访问就必须重新登录,这就是过滤器起到的作用。当我们访问某个接口时,过滤器会拦截请求,判断当前用户是否是登录状态,若登录则放行访问,若未登录则返回指定页面(通常为登录页或一个客户友好的提示页)
这个过程包含了过滤器的生命周期:
1.实例化
2.初始化
3.执行过滤操作(包括访问前对request操作和返回时对response的操作处理)
4.销毁
三、过滤器使用
在springboot项目简单使用过滤器进行登录拦截处理
1.实现过滤器
public class MyFilter implements Filter { private static final String CURRENT_USER = "current_user"; //配置白名单 protected static Listpatterns = new ArrayList (); //静态代码块,在虚拟机加载类的时候就会加载执行,而且只执行一次 static { patterns.add(Pattern.compile("/index")); patterns.add(Pattern.compile("/login")); patterns.add(Pattern.compile("/register")); } @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { HttpServletRequest httpRequest = (HttpServletRequest) servletRequest; HttpServletResponse httpResponse = (HttpServletResponse) servletResponse; HttpServletResponseWrapper wrapper = new HttpServletResponseWrapper(httpResponse); String url = httpRequest.getRequestURI().substring(httpRequest.getContextPath().length()); if (isInclude(url)) { //在白名单中的url,放行访问 filterChain.doFilter(httpRequest, httpResponse); return; } if (SessionUtils.getSessionAttribute(CURRENT_USER) != null) { //若为登录状态 放行访问 filterChain.doFilter(httpRequest, httpResponse); return; } else { //否则默认访问index接口 wrapper.sendRedirect("/index"); } } @Override public void destroy() { }//判断当前请求是否在白名单 private boolean isInclude(String url) { for (Pattern pattern : patterns) { Matcher matcher = pattern.matcher(url); if (matcher.matches()) { return true; } } return false; }}
2.注册过滤器
@Configurationpublic class WebConfig { /** * 配置过滤器 * @return */ @Bean public FilterRegistrationBean someFilterRegistration() { FilterRegistrationBean registration = new FilterRegistrationBean(); registration.setFilter(myFilter()); //拦截/*的访问 多级匹配(springboot 过滤器/*以及匹配 /**多级匹配) registration.addUrlPatterns("/*"); registration.setName("myFilter"); return registration; } /** * 创建一个bean * @return */ @Bean(name = "myFilter") public Filter myFilter() { return new MyFilter(); }}
3.运行项目
访问/index,会发现没有被拦截,返回正确结果
在未登录状态,访问/update接口,会被拦截跳转至/index页
在登录状态,访问/update接口,可以访问
这里也可以在程序debug看下。简单的过滤器功能完成。
常用过滤器及其使用后续再来学习。
filter简易实现登录功能拦截
暑期项目实习第八课, filter简易实现登录功能拦截
LoginFliter
public class LoginFliter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) servletRequest; HttpServletResponse response = (HttpServletResponse) servletResponse; HttpSession session = request.getSession(); User user = (User)session.getAttribute("user"); String uri = request.getRequestURI(); System.out.println(uri.indexOf("findAll.do")); System.out.println(uri.indexOf("login.do")); if(user==null && uri.indexOf("login.do")==-1){ response.sendRedirect(request.getContextPath()+"/"); }else { filterChain.doFilter(request,response); } } @Override public void destroy() { }}
controller
@RequestMapping("/login.do") public ModelAndView login(User user, HttpSession session){ boolean flag = userService.login(user.getName(),user.getPassword()); ModelAndView modelAndView = new ModelAndView(); if(flag){ session.setAttribute("user",user); modelAndView.setViewName("../ok"); }else { modelAndView.setViewName("../failure"); } return modelAndView; }
结果图
感谢你能够认真阅读完这篇文章,希望小编分享的"java如何使用过滤器实现登录拦截处理"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!
过滤器
登录
处理
接口
状态
篇文章
功能
名单
项目
周期
客户
文件
服务器
生命
简易
结果
资源
页面
学习
服务
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全公司战略发展
我与网络安全主题班会图片
河北驰捷网络技术有限公司海天
网络安全典型事件
特斯拉503服务器维护是什么
个人软件开发是否交个税
当前软件开发概论
我的起源服务器更新时间
Ea破服务器
利用数据库齐全的方法不包括
互联网科技mcn创业孵化
哈尔滨短信软件开发公司
网络安全为国为民建设方案
国家网络安全成果
数据库的内部连接
高中生维护网络安全
网络安全演讲目的
武隆软件开发培训
数据库 答辩问题
网络安全课程报告两千字
数据库编程技术和实例
这世界如何在服务器上开创造
软件开发公司如何开发市场
浪潮服务器下载jviewer
影响网络安全的要素
用网络服务器连接的电脑怎样扫码
成都网络安全课程就业待遇
联想服务器阵列原理
联合国网络安全组组长
网络安全工作的活动目标