1、用户登录之前不管是哪个链接,都会跳转到登录界面

2、在登陆成功之后,添加session用户信息

3、如果在有session认证的情况下访问,无需登录

用户从登录界面进来后,把用户信息存储到session里面, 每次退出登录就把session里用户清除。

每次用户访问程序都会查session里有没有这个用户信息,如果没有就跳到登陆界面,如果有就跳转用户以前的界面无需在登录。

首先编写拦截器

拦截用户访问的路径

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;//拦截器配置类
@Configuration
public class LoginConfig implements WebMvcConfigurer {@Overridepublic void addInterceptors(InterceptorRegistry registry) {InterceptorRegistration reg = registry.addInterceptor(new UserLoginInterceptor());reg.addPathPatterns("/**");//  /** 是拦截所有路径reg.excludePathPatterns(//不拦截的白名单-和静态资源"/login","/login_Ajax","/layui/**"        );}
}

实现HandlerInterceptor 接口

HandlerInterceptor接口中定义了三个方法。

public boolean preHandle() 这个方法是在执行controller之前执行,如果为true就继续执行controller,如果是false就放弃执行
public void postHandel()
public void afterCompletion()
import com.express.pojo.User;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;public class UserLoginInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {System.out.println("执行了拦截器的preHandle方法");try {HttpSession session = request.getSession();//统一拦截(查询当前session是否存在user)(这里user会在每次登录成功后,写入session)User user = (User) session.getAttribute("user");if (user != null){return true;}//不为true 就重定向到longin登录页面response.sendRedirect(request.getContextPath() + "login");}catch (Exception e){e.printStackTrace();}return false;}@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {System.out.println("执行了拦截器的postHandle方法")   ;}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {System.out.println("执行了拦截器的afterCompletion方法");}
}

用户登录进来之后,给用户信息存到session里面

req.getSession().setAttribute("user", user);

用户点击退出就清除session

session.setAttribute("user", null);

session实现登录相关推荐

  1. spring session 退出登录 清理session

    2019独角兽企业重金招聘Python工程师标准>>> spring session 退出登录 清理session 博客分类: spring /*** Allows creating ...

  2. 使用session保持登录状态,cookie保存用户账号密码

    session保存登录状态与cookie保存账号密码 1. session维持登录状态 1.1 代码实现 2. cookie保存账号密码 2.1 什么是cookie 2.2 cookie记住账号密码 ...

  3. python模拟session_python使用requests.session模拟登录

    最近开发一套接口,写个Python脚本,使用requests.session模拟一下登录. 因为每次需要获取用户信息,登录需要带着session信息,所以所有请求需要带着session. 请求使用po ...

  4. Shiro实现session限制登录数量踢人下线

    Shiro实现session限制登录数量踢人下线 前言 实现 ■ 架构准备 ShiroConfig ■ redis内的存储分布 ■ 代码修改 修改 JedisSessionDAO 修改 SystemA ...

  5. 有关session的登录注销的一个小例子

    下面是一个session的应用的小例子,是用来注销登录的 登陆界面的代码: login.html: [java] view plaincopy <!DOCTYPE HTML PUBLIC &qu ...

  6. springsecurity 不允许session并行登录_Spring Security 实战干货:实现自定义退出登录...

    我是 码农小胖哥.天天有编程干货分享.觉得写的不错.点个赞,转发一下,关注一下.本文为个人原创文章,转载请注明出处,非法转载抄袭将追究其责任. 1. 前言 上一篇对 Spring Security 所 ...

  7. 【JSP开发】有关session的登录注销的一个小例子

    下面是一个session的应用的小例子,是用来注销登录的 登陆界面的代码: login.html: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4. ...

  8. ctfshow-WEB-web11( 利用session绕过登录验证)

    ctf.show WEB模块第11关用session中保存的密码进行登录验证, 将 session中保存的密码清空即可绕过 页面中直接给了源码, 很明显是让我们进行代码审计,  源码中将我们输入的密码 ...

  9. python爬虫使用session保持登录状态

    今天有个客户需求,从网站上下载会员试题,需要在登录状态下载,然后将网页中展示的试题保存在word中. 网站上展示的所有试题要保存在一个word文档中,但是每一个试题结束下一个试题开始都是分开页码,一道 ...

最新文章

  1. 移动中”的HTML5-开源图表库ichartjs-王鹤
  2. ERP成分简介--听觉感觉反应
  3. ASP.NET中 DropDownList+GridView(网格视图)的使用前台绑定[高]
  4. python3.6.0怎么安装pip_python3.6环境安装+pip环境配置教程图文详解
  5. Java正确获取客户端真实IP方法整理
  6. 不得不赞!一个国内(可能)最好的海量CV数据集获取网站
  7. 使用 Maven Profile 和 Filtering 打各种环境的包(转)
  8. python with open as yaml_python – pyyaml并仅使用字符串引号
  9. java 图片自适应_水印宽高比例自适应图片(Java-Thumbnails)
  10. 计算机软件维护方法,计算机软件维护策略
  11. html修改成透明色,在html2canvas中将透明颜色更改为白色
  12. android编程闪退,软件闪退怎么办
  13. 微信能上网但是浏览器无法上网,原因在于上次关机时加速器忘记关闭,解决办法如下
  14. 泰山众筹如何实现用户主动裂变?
  15. ajax回调函数 异步延迟
  16. python-模块使用方法
  17. Git:Github镜像网站
  18. Android 基于libaums实现读写U盘文件
  19. 我们的管理:部门管理
  20. foobar2000利用cue对ape进行分轨操作及其常见问题

热门文章

  1. html语言调用图片,css文件中怎么引用图片?
  2. Qt学习笔记之 字符串类型小结
  3. zabbix配置邮箱报警
  4. 《单页Web应用:JavaScript从前端到后端》——1.4 小结
  5. [CS101] 转载:浅议Fibonacci(斐波纳契)数列求解
  6. tcpdump -i eth0 -n -vvv src or dst port 443
  7. 不同网段互PING,对不?
  8. 简单几步搞定ISA ×××
  9. 引用:编写高性能Web应用程序的10个技巧(一)
  10. C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\文件不断增长,如何处理?...