SpringBoot 增加 拦截器 判断是否登录
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 增加 拦截器 判断是否登录的更多相关文章
- springboot+springmvc拦截器做登录拦截
springboot+springmvc拦截器做登录拦截 LoginInterceptor 实现 HandlerInterceptor 接口,自定义拦截器处理方法 LoginConfiguration ...
- Springboot 拦截器配置(登录拦截)
Springboot 拦截器配置(登录拦截) 注意这里环境为springboot为2.1版本 1.编写拦截器实现类,实现接口 HandlerInterceptor, 重写里面需要的三个比较常用的方 ...
- springboot + 注解 + 拦截器 + JWT 实现角色权限控制
1.关于JWT,参考: (1)10分钟了解JSON Web令牌(JWT) (2)认识JWT (3)基于jwt的token验证 2.JWT的JAVA实现 Java中对JWT的支持可以考虑使用JJWT开源 ...
- 系统开发中使用拦截器校验是否登录并使用MD5对用户登录密码进行加密
项目名称:客户管理系统 项目描述: 项目基于javaEE平台,B/S模式开发.使用Struts2.Hibernate/Spring进行项目框架搭建.使用Struts中的Action 控制器进行用户访问 ...
- axios token header response request http拦截器 axios实现登录、拦截、登出
axios token header response request http拦截器 axios实现登录.拦截.登出 一个项目学会前端实现登录拦截 https://github.com/superm ...
- SpringBoot自定义拦截器实现IP白名单功能
SpringBoot自定义拦截器实现IP白名单功能 转载请注明源地址:http://www.cnblogs.com/funnyzpc/p/8993331.html 首先,相关功能已经上线了,且先让我先 ...
- spring mvc 用cookie和拦截器实现自动登录(/免登录)
Cookie/Session机制详解:http://blog.csdn.net/fangaoxin/article/details/6952954 SpringMVC记住密码功能:http://blo ...
- SpringBoot使用拦截器
SpringBoot的拦截器只能拦截流经DispatcherServlet的请求,对于自定义的Servlet无法进行拦截. SpringMVC中的拦截器有两种:HandlerInterceptor和W ...
- springMVC使用拦截器检查用户登录
参考文章 编写拦截器类 package cultivate_web.interceptor; import javax.servlet.http.HttpServletRequest; import ...
随机推荐
- HDOJ1084 What Is Your Grade?
What Is Your Grade? Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Othe ...
- HDU 5310 Souvenir
Souvenir Accepts: 901 Submissions: 2743 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262 ...
- js 压缩图片 H5
原理 用 canvas的 toDataURI (type , int ) 如果type参数的值为image/jpeg或image/webp,则第二个参数的值如果在0.0和1.0之间的话,会被看作是图 ...
- HDU-3577-Fast Arrangement-区间更新
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3577 好吧,我认为这道题有必要说一下题目意思:毕竟我刚開始是没有看太懂,原谅我这个英语渣渣...ORZ ...
- ACdream 1139(Sum-逆元)
J - Sum Time Limit: 2000/1000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others) SubmitStatu ...
- HDOJ 4975 A simple Gaussian elimination problem.
和HDOJ4888是一样的问题,最大流推断多解 1.把ISAP卡的根本出不来结果,仅仅能把全为0或者全为满流的给特判掉...... 2.在残量网络中找大于2的圈要用一种类似tarjian的方法从汇点開 ...
- sicily 1003. hash
Description 请用HASH链式法来解决冲突,且规定链表在链表头插入新元素. 规定HASH函数为:h(x) = x % 11,即哈希数组下标为0-10. 给定两种操作: I 操作,插入一个新的 ...
- Monad的基本运算
A monad is created by defining a type constructor M and two operations, bind and return (where retur ...
- luogu-1908 逆序对 离散化+树状数组
题目链接:https://www.luogu.org/problem/show?pid=P1908 题意 简单的求逆序对 思路 用树状数组来做逆序对 对于过大的数字来讲,用离散化处理即可 比赛的时候没 ...
- PHP -Casbin: 支持 ACL、RBAC、ABAC 多种模型的 PHP 权限管理框架
PHP-Casbin 是一个用 PHP 语言打造的轻量级开源访问控制框架( https://github.com/php-casbin... ),目前在 GitHub 开源.PHP-Casbin 采用 ...