1、创建拦截器

package com.example.demo.interceptor;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
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; /**
* 〈一句话功能简述〉<br>
* 〈拦截器〉
*
* @author 丶Zh1Guo
* @create 2018/11/22
* @since 1.0.0
*/
public class LoginInterceptor implements HandlerInterceptor {
private Logger logger = LoggerFactory.getLogger(LoginInterceptor.class); // 在请求处理之前,只有返回true才会执行请求
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
logger.info("[拦截器]启动登录状态拦截");
// 得到session
HttpSession session = request.getSession();
logger.info("[拦截器]sessionID:" + session.getId());
// 得到用户信息
Object userInfo = session.getAttribute("userInfo");
//判断用户是否登录
if (userInfo != null) {
logger.info("[拦截器]用户已经登录,用户名,密码:" + session.getAttribute("userInfo"));
return true;
} else {
//不存在跳转至登录页
response.sendRedirect(request.getContextPath() + "/"); // 跳转到首页登录
logger.info("[拦截器]用户没有登录,已跳转到:" + request.getContextPath() + "/");
return false;
}
} // 视图渲染后执行
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { } // 请求处理后,视图渲染前
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { }
}

2、.继承WebMvcConfigureAdapter类,覆盖其addInterceptors接口,注册自定义的拦截器

@Configuration 注解一定要有
package com.example.demo.interceptor;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; /**
* 〈一句话功能简述〉<br>
* 〈自定义配置类〉
*
* @author 丶Zh1Guo
* @create 2018/11/22
* @since 1.0.0
*/
@Configuration
public class LoginConfig implements WebMvcConfigurer { /**
* 该方法用于注册拦截器
* 可注册多个拦截器,多个拦截器组成一个拦截器链
*/
@Override
public void addInterceptors(InterceptorRegistry registry) {
// addPathPatterns 添加路径
// excludePathPatterns 排除路径
registry.addInterceptor(new LoginInterceptor())
.addPathPatterns("/sys/*"); // 拦截sys路径下的url
// .excludePathPatterns("");
}
}

3、LoginController

/**
* Copyright (C), 2017-2018, XXX有限公司
* FileName: LoginController
* Author: 丶Zh1Guo
* Date: 2018/11/22 11:10
* Description: 登录
* History:
* <author> <time> <version> <desc>
* 作者姓名 修改时间 版本号 描述
*/
package com.example.demo.controller; import com.example.demo.dao.UserDAO;
import com.example.demo.pojo.User;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody; import javax.servlet.http.HttpServletRequest; /**
* 〈一句话功能简述〉<br>
* 〈登录〉
*
* @author 丶Zh1Guo
* @create 2018/11/22
* @since 1.0.0
*/
@Controller
public class LoginController {
// 日志
private Logger logger = LoggerFactory.getLogger(LoginController.class); @Autowired
private UserDAO userDAO; // 启动服务自动跳转登录
// @RequestMapping(value = {"/", "/login"})
@RequestMapping(value = "/")
public String login() {
return "login";
} // 登录
@RequestMapping(value = "/loginCheck", method = RequestMethod.POST)
@ResponseBody
public String loginCheck(HttpServletRequest request) {
// 获取登录信息
String userName = request.getParameter("userName");
String password = request.getParameter("password"); // 封装成对象
User user = new User();
user.setUserName(userName);
user.setPassword(password); // 校验用户信息
User info = userDAO.checkUser(user);
if (info != null) {
request.getSession().setAttribute("userInfo", userName + "-" + password);
logger.info("登录成功,用户名:" + userName + "密码:" + password);
return "success";
} else {
logger.info("登录失败,用户名:" + userName + "密码:" + password);
return "fail";
}
}
}

4、未登录会自动跳转到登录页面

SpringBoot 增加 拦截器 判断是否登录的更多相关文章

  1. springboot+springmvc拦截器做登录拦截

    springboot+springmvc拦截器做登录拦截 LoginInterceptor 实现 HandlerInterceptor 接口,自定义拦截器处理方法 LoginConfiguration ...

  2. Springboot 拦截器配置(登录拦截)

    Springboot 拦截器配置(登录拦截) 注意这里环境为springboot为2.1版本 1.编写拦截器实现类,实现接口   HandlerInterceptor, 重写里面需要的三个比较常用的方 ...

  3. springboot + 注解 + 拦截器 + JWT 实现角色权限控制

    1.关于JWT,参考: (1)10分钟了解JSON Web令牌(JWT) (2)认识JWT (3)基于jwt的token验证 2.JWT的JAVA实现 Java中对JWT的支持可以考虑使用JJWT开源 ...

  4. 系统开发中使用拦截器校验是否登录并使用MD5对用户登录密码进行加密

    项目名称:客户管理系统 项目描述: 项目基于javaEE平台,B/S模式开发.使用Struts2.Hibernate/Spring进行项目框架搭建.使用Struts中的Action 控制器进行用户访问 ...

  5. axios token header response request http拦截器 axios实现登录、拦截、登出

    axios token header response request http拦截器 axios实现登录.拦截.登出 一个项目学会前端实现登录拦截 https://github.com/superm ...

  6. SpringBoot自定义拦截器实现IP白名单功能

    SpringBoot自定义拦截器实现IP白名单功能 转载请注明源地址:http://www.cnblogs.com/funnyzpc/p/8993331.html 首先,相关功能已经上线了,且先让我先 ...

  7. spring mvc 用cookie和拦截器实现自动登录(/免登录)

    Cookie/Session机制详解:http://blog.csdn.net/fangaoxin/article/details/6952954 SpringMVC记住密码功能:http://blo ...

  8. SpringBoot使用拦截器

    SpringBoot的拦截器只能拦截流经DispatcherServlet的请求,对于自定义的Servlet无法进行拦截. SpringMVC中的拦截器有两种:HandlerInterceptor和W ...

  9. springMVC使用拦截器检查用户登录

    参考文章 编写拦截器类 package cultivate_web.interceptor; import javax.servlet.http.HttpServletRequest; import ...

随机推荐

  1. Codeforces Round #271 (Div. 2) 解题报告

    题目地址:http://codeforces.com/contest/474 A题:Keyboard 模拟水题. 代码例如以下: #include <iostream> #include ...

  2. Block的使用--初探Block

    看了两天的Block. 网上是有非常多解说与教程,也有讲得非常好的.这里就主要解说下我的理解与收获.欢迎拍砖. 所谓block.我觉得应该是一个闭包函数.而闭包,就是说block以及内部全部的变量生命 ...

  3. Android组件系列----ContentProvider内容提供者【1】

    [正文] 一.ContentProvider简单介绍: ContentProvider内容提供者(四大组件之中的一个)主要用于在不同的应用程序之间实现数据共享的功能. ContentProvider能 ...

  4. Java 深拷贝和浅拷贝 利用序列化实现深拷贝

    Java 深拷贝和浅拷贝 转自:http://www.cnblogs.com/mengdd/archive/2013/02/20/2917971.html 深拷贝(deep clone)与浅拷贝(sh ...

  5. 36.创建自定义的指令directive

    转自:https://www.cnblogs.com/best/tag/Angular/ 1. <html> <head> <meta charset="utf ...

  6. POJ 1274 二分图匹配

    匈牙利算法 裸题 //By SiriusRen #include <cstdio> #include <cstring> #include <algorithm> ...

  7. Kali linux 2016.2(Rolling)中metasploit的主机探测

    不多说,直接上干货! 1.活跃主机扫描 root@kali:~# ping -c 202.193.58.13 PING () bytes of data. bytes ttl= time=25.4 m ...

  8. 如何安装MySQL?(二)

    MYSQL的两种安装方式 MSI安装 ZIP安装 第一步: 第二步: 第三步: 这里我选择下载到桌面吧! 第四步: 第五步: 第六步: 第七步: 典型安装:除了安装MySQL的服务器,还安装MySQL ...

  9. 继承—Car

    编写一个Car类,具有final类型的属性品牌,具有功能drive: 定义其子类Aodi和Benchi,具有属性:价格.型号:具有功能:变速: 定义主类E,在其main方法中分别创建Aodi和Benc ...

  10. word/excel/ppt 2 PDF

    PHP 实现 word/excel/ppt 转换为 PDF 一般最常见的就是利用OpenOffice来转换,来看看实现的核心代码: class PDFConverter { private $com; ...