SpringBoot登录拦截配置详解(实测可用)

背景:写一个用户登录拦截,在网上找了一圈没找到好用的,于是自己试验了一下,总结出来,分享给大家。

1.自定义登录拦截器LoginInterceptor

public class LoginInterceptor implements HandlerInterceptor {

  @Override
  public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
  	// 这里是关键
    User loginUser = (User) request.getSession().getAttribute("user");
    if (loginUser == null) {
      // 未登录抛出异常,交给统一异常处理器处理
      throw new CustomException(ResultCode.USER_NOT_LOGIN);
    }
    return true;
  }

  @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.在WebConfigurer中添加拦截器

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {

  @Override
  public void addInterceptors(InterceptorRegistry registry) {
    //注册TestInterceptor拦截器
    registry.addInterceptor(new LoginInterceptor())
        .addPathPatterns("/**")
        // 排除登录注册等接口,注意这里的格式是 /**/xxx
        .excludePathPatterns("/**/login", "/**/register");
  }
}

3.登录接口

 /**
   * 登录
   * @return 用户信息
   */
public User login(UserVO userVO. HttpServlet) {
  String username = userVO.getUsername();
  String password = userVO.getPassword();

  User user = userMapper.findByUsernameAndPassword(username, password);
  // 未找到用户
  if(user == null) {
    throw new CustomException(ResultCode.USER_ACCOUNT_ERROR);
  }
  // 设置session中的用户信息
  SessionUtils.setSessionAttribute("user", user);
  return user;
}

文中的代码细节不一一列举了,这里重点讨论的拦截器,感兴趣的朋友可以私聊我获取其他代码。

结果

未登录的情况下,请求普通接口提示未登录。

请求登录接口。

登录后再去请求普通接口,返回正常。

-END-

到此这篇关于SpringBoot登录拦截配置详解(实测可用)的文章就介绍到这了,更多相关SpringBoot登录拦截内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • springboot+springmvc实现登录拦截

    这篇文章主要介绍了springboot+springmvc实现登录拦截,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 LoginInterceptor 实现 HandlerInterceptor 接口,自定义拦截器处理方法 LoginConfiguration 实现 WebMvcConfigurer 接口,注册拦截器 ResourceBundle 加载 properties文件数据,配置不进行拦截的路径 LoginInterceptor pac

  • springboot实现拦截器之验证登录示例

    整理文档,搜刮出一个springboot实现拦截器之验证登录示例,稍微整理精简一下做下分享. 添加jar包,这个jar包不是必须的,只是在拦截器里用到了,如果不用的话,完全可以不引入 <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.5</version> </dep

  • SpringBoot拦截器实现登录拦截的方法示例

    源码 GitHub:https://github.com/291685399/springboot-learning/tree/master/springboot-interceptor01 SpringBoot拦截器可以做什么 可以对URL路径进行拦截,可以用于权限验证.解决乱码.操作日志记录.性能监控.异常处理等 SpringBoot拦截器实现登录拦截 pom.xml: <?xml version="1.0" encoding="UTF-8"?> &

  • SpringBoot登录拦截配置详解(实测可用)

    背景:写一个用户登录拦截,在网上找了一圈没找到好用的,于是自己试验了一下,总结出来,分享给大家. 1.自定义登录拦截器LoginInterceptor public class LoginInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) thr

  • SpringBoot热重启配置详解

    1.添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> 不能被其它模块继承,如果多个子模块可以去掉 不必须 <scope>runtime</scope> 只在运行时起作用 打包时不打进去

  • SpringBoot之LogBack配置详解

    LogBack 默认集成在 Spring Boot 中,是基于 Slf4j 的日志框架.默认情况下 Spring Boot 是以 INFO 级别输出到控制台. 它的日志级别是: ALL < TRACE < DEBUG < INFO < WARN < ERROR < OFF 配置 LogBack 可以直接在 application.properties 或 application.yml 中配置,但仅支持一些简单的配置,复杂的文件输出还是需要配置在 xml 配置文件中.配

  • SpringBoot中shiro过滤器的重写与配置详解

    目录 问题 解决方案 实现代码 1.重写shiro 登录 过滤器 2.重写role权限 过滤器 3.配置过滤器 问题 遇到问题:在前后端分离跨域访问的项目中shiro进行权限拦截失效 (即使有正确权限的访问也会被拦截) 时造成302重定向错误等问题报错:Response for preflight is invalid (redirect) 1.302原因:使用ajax访问后端项目时无法识别重定向操作 2.shiro拦截失效原因:跨域访问时有一种带预检访问的跨域,即访问时先发出一条methods

  • Springboot项目中使用redis的配置详解

    程序结构: 一.配置 1. 在pom.xml中添加依赖 pom.xml文件如下: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=&q

  • SpringBoot整合Web之AOP配置详解

    目录 配置AOP AOP简介 Spring Boot 支持 其它 自定义欢迎页 自定义 favicon 除去某个自动配置 配置AOP AOP简介 要介绍面向切面变成(Aspect-Oriented Programming,AOP),需要先考虑一个这样的场景:公司有一个人力资源管理系统目前已经上线,但是系统运行不稳定,有时运行的很慢,为了检测到底是哪个环节出现问题了,开发人员想要监控每一个方法执行的时间,再根据这些执行时间判断出问题所在.当问题解决后,再把这些监控移除掉.系统目前已经运行,如果手动

  • nginx+keepalived 高可用主从配置详解

    本文介绍了nginx+keepalived 高可用主从配置详解,分享给大家,具体如下: 一.系统环境及软件版本 CentOS 6.6 x64 keepalived-1.2.18.tar.gz nginx-1.6.2.tar.gz 主服务器:192.168.38.64 从服务器:192.168.38.66 VIP :192.168.38.100 二.nginx安装 (主从安装一致) 1.安装依赖环境 复制代码 代码如下: yum install gcc gcc-c++ make automake

  • vscode配置leetcode插件并解决无法登录问题(图文详解)

    官方文档 https://github.com/LeetCode-OpenSource/vscode-leetcode/blob/master/docs/README_zh-CN.md 1.环境 window10 vscode 1.23.0+ Node.js 10+ 如果Node.js 没添加到环境变量需要手动添加,添加成功在cmd中输入node --version会显示:  2.配置 vscode安装leetcode插件: 安装完右侧会出现: 此时发现账号密码方式无法登录(本次教程都针对国际版

  • SpringBoot集成JmsTemplate(队列模式和主题模式)及xml和JavaConfig配置详解

    1.导入jar包: <!--jmsTemplate--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-activemq</artifactId> </dependency> <dependency> <groupId>org.apache.activemq</g

  • SpringBoot+docker环境变量配置详解

    项目中遇到springBoot+docker需要配置不同环境变量的问题,做个简单的总结: 1.开发环境ide中启动项目 可以通过ide的环境变量参数配置,启动之后使用哪个配置,比如 这样就使用application-test.yml中的配置 2.通过gradle打包 可以通过-P参数来指定打包后的jar使用哪种环境来运行,比如 gradlew -Pprod bootWar 打包之后运行会使用prod中的配置:我的项目是jhipster生成出来的,现在需要添加test的环境配置,需求修改下项目的g

随机推荐