javaweb关于用户是否登录全局判断,没有登录跳转到登录界面
有这样一个需求,用户密码登录网站,在session中保留了用户的信息,但是用户很长时间没有再操作该界面,用户的session则被浏览器清除,而一些业务逻辑则是需要用到用户的信息,那么用户再执行操作后,则会引起业务代码报错,这时我们就需要在用户访问的时候判断一下用户的信息是否存在,如何实现这个功能,我们这里用到了过滤器这个功能,在用户访问特定界面或者特定接口的时候,先进行过滤,复合条件再执行下一步操作,具体代码如下:
package com.demo.filter;import java.io.IOException;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.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession;import com.demo.entity.User; /*** 全站判断用户是否登录过滤器* @author zhangdi**/ public class AuthFilter implements Filter{@Overridepublic void destroy() {}@Overridepublic void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {HttpServletResponse resp = (HttpServletResponse)response;HttpServletRequest req = (HttpServletRequest)request;HttpSession session = req.getSession();User user = (User)session.getAttribute("user");String uri = req.getRequestURI();//简单判断缓存中是否有用户if(user==null){//没有用户//判断用户是否是选择跳到登录界面if(uri.endsWith("login.jsp")||uri.endsWith("login.do")){chain.doFilter(request, response);}else{resp.sendRedirect(req.getContextPath()+"/login.jsp");} }else{//有用户 chain.doFilter(request, response);}chain.doFilter(request, response);}@Overridepublic void init(FilterConfig filterConfig) throws ServletException {}}
注意,这个过滤器需要在web.xml中声明,不然不会被项目调用,代码如下:
<!-- 登录认证过滤器 --><filter><filter-name>auth</filter-name><filter-class>com.demo.filter.AuthFilter</filter-class></filter><filter-mapping><filter-name>auth</filter-name><url-pattern>*.jsp</url-pattern></filter-mapping><filter-mapping><filter-name>auth</filter-name><url-pattern>*.do</url-pattern></filter-mapping>
这里配置过滤的范围是所有的jsp界面以及所有以.do结尾的接口
转载于:https://www.cnblogs.com/zhangdiIT/p/6772615.html
javaweb关于用户是否登录全局判断,没有登录跳转到登录界面相关推荐
- Vue 用户30分钟未操作,页面跳转到登录页
<template><div id="app"><router-view/></div> </template> < ...
- 【八】有验证码登录配置:通过 Cookie 跳过验证码登录接口
一.基本配置 二.HTTP请求默认值 (1)jmeter的设置: (2)设置HTTP请求默认值的优点: 1.该默认请求值下的所有接口,都不用填以下截图这几个选项. 2.而且可以通过修改默认值的域名和端 ...
- Struts 拦截器权限控制【通过拦截器实现登录后跳转到登录前页面】
应用情形:在web项目中,经常会遇到用户未登录或SESSION失效时用户发出非法的权限操作,如新闻的评论.文件的下载等等,在此我们可以使用struts拦截器对该用户发出的请求进行拦截,拦截后判断用户是 ...
- php未登录跳到登陆页面,vue实现未登录跳转到登录页面的方法
环境:vue 2.9.3; webpack;vue-router 目的:实现未登录跳转 例子:直接在url地址栏输入...../home,但是这个页面要求需要登陆之后才能进入,判断的值就通过登陆之后给 ...
- java shiro登录实例_Shiro安全框架入门篇(登录验证实例详解与源码)
转载自http://blog.csdn.net/u013142781 一.Shiro框架简单介绍 Apache Shiro是Java的一个安全框架,旨在简化身份验证和授权.Shiro在JavaSE和J ...
- Vue 如何实现登录后,跳转到登录之前要访问的页面
Vue 如何实现登录后,跳转到登录之前要访问的页面 一.需求 有些时候,需要实现这样的功能: 项目中的有些页面是可以直接访问的,不需要登录. 但这个页面中的一些链接一些路径则需要登录后才能查看,也就是 ...
- CAS单点登录 - 创建用户会话、全局门票、临时票据
CAS的统一登录接口目的:1. 登录后创建用户的全局会话 -> uniqueToken2. 创建用户全局门票,用以表示在CAS端是否登录 -> userTicket3. 创建用户的临时票据 ...
- vue路由守卫判断用户是否登录,如果没登陆就跳转到登录
router.beforeEach((to, from, next) => {//路由跳转中const nextRoute = ['About'];//将所有需要登陆才显示的页面的路由都放进一个 ...
- php 高效判断是否登录,php 判断用户是否登录
判断用户登陆主要分几个过程,第一步是用户登陆成功后把数据保存到session中,然后当用户访问需要登陆过的用户权限时就来判断session是否为空,如果不是就登录成功.下面来看个实例 session_ ...
最新文章
- c语言实现 十进制到二进制的转换
- 关于数据仓库数据质量的问题处理
- 【白话设计模式二】外观模式(Facade)
- Visual Basic的未来之路
- WebHelper类
- linux安装服务程序,将 Go 程序安装成系统服务
- 词汇的积累与遣词造句 —— 准确的表达、新鲜的词汇
- Python使用XGBoost
- python设置路径变量_python – Bokeh中设置的静态路径变量在哪里(对于create_html_snippet)...
- 进入“后红海”时代,大数据体系到底是什么?
- MATLAB绘图——加强篇
- laravel5.5 Validator 自定义错误提示语
- CF140C New Year Snowmen (#贪心+优先队列)
- 存储之磁盘阵列RAID
- 父亲将房子过户给后代需要交税吗
- java组件叠加显示,如何让上层的组件一直在上层显示
- 漫画 | 什么是 HashMap?
- MySQL:排序(filesort)详细解析(8000字长文)
- 深切悼念JAVA培训界第一人张孝祥老师意外辞世
- FDFS_Ubuntu部署fdfs测试上传文件不成功
热门文章
- r语言平均值显著性检验_8小时整理!t检验原理!R语言实现!一文彻底搞定t检验(上)...
- python实现一个简单的加法计算器_Python tkinter实现简单加法计算器代码实例
- 18年石油大学c语言网考答案,石油大学华东C语言2018在线考试.doc
- scikit-image安装 from numpy.lib.arraypad import _validate_lengths ImportError: cannot import name ‘_va
- Python之web开发(一):python常用搭建网站的框架简介
- 有三AI第一批10个研究小组上线
- 喜马拉雅音频下载工具
- AtCoder Regular Contest 067 F - Yakiniku Restaurants
- 初识 HTML5(一)
- golang 编写的邮件客户端