当前位置: 首页 > news >正文

spring框架限制接口是否要登录过才能访问

1、引入spring 、spring boot依赖,这部分不再多说,正常开发spring boot项目就可以。

2、定义类,实现WebMvcConfigurer接口

package com.hmblogs.config;import com.hmblogs.config.web.interceptor.PortalTokenInterceptor;
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 InterceptorConfig implements WebMvcConfigurer {@Overridepublic void addInterceptors(InterceptorRegistry registry) {PortalTokenInterceptor tokenInterceptor = (PortalTokenInterceptor) SpringFactory.getBean("portalTokenInterceptor");InterceptorRegistration tokenRegistration = registry.addInterceptor(tokenInterceptor);tokenRegistration.addPathPatterns("/**");tokenRegistration.excludePathPatterns("/swagger-ui.html").excludePathPatterns("/doc.html").excludePathPatterns("/swagger-ui.html/**").excludePathPatterns("/swagger**").excludePathPatterns("/**/swagger**").excludePathPatterns("/configuration/ui").excludePathPatterns("/**/configuration/ui").excludePathPatterns("/swagger-resources").excludePathPatterns("/**/swagger-resources").excludePathPatterns("/configuration/security").excludePathPatterns("/**/configuration/security").excludePathPatterns("/v2/api-docs").excludePathPatterns("/error").excludePathPatterns("/webjars/**").excludePathPatterns("/**/favicon.ico").excludePathPatterns("/login/**").excludePathPatterns("/v3/secStaff/checkUserExistByEmail").excludePathPatterns("/v3/secStaff/register").excludePathPatterns("/v3/secStaff/sendVerifyCode").excludePathPatterns("/v3/secStaff/checkEmail").excludePathPatterns("/v3/secStaff/checkPhone").excludePathPatterns("/v3/secStaff/checkVerifyCode");}}

3、定义拦截器,实现HandlerInterceptor接口

package com.blogs.config.web.interceptor;import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
import cn.hutool.http.HttpStatus;
import cn.hutool.json.JSONUtil;import com.alibaba.fastjson.JSON;
import liquibase.util.MD5Util;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.time.Duration;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;@Slf4j
@Component
public class PortalTokenInterceptor implements HandlerInterceptor {@Autowiredprivate RedisService redisService;@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)throws Exception {//获取tokenString token = request.getHeader("Authoritarian");log.info("-----------token:" + token);//token为空,则返回401if(StringUtils.isEmpty(token)) {response.setStatus(HttpStatus.HTTP_UNAUTHORIZED);response.setContentType("application/json");response.setCharacterEncoding("utf-8");response.getWriter().print(JSONUtil.toJsonStr(RestResponse.failed(ResultCode.UN_AUTHORIZED, "认证失败")));return false;}return true;}@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,ModelAndView modelAndView) throws Exception {}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)throws Exception {}
}

相关文章:

  • python-Bert(谷歌非官方产品)模型基础笔记0.1.096
  • 【react】react项目支持鼠标拖拽的边框改变元素宽度的组件
  • 纳什均衡:博弈论中的运作方式、示例以及囚徒困境
  • 如何将AndroidStudio和IDEA的包名改为分层级目录
  • python --监听鼠标事件
  • k8s——安全机制
  • 【机器学习】我们该如何评价GPT-4o?GPT-4o的技术能力分析以及前言探索
  • DevOps入门
  • Tomcat相关概述和部署
  • 力扣第417题测试程序
  • Java微服务实战:使用Spring Boot构建高效服务
  • kv视频如何转码mp4格式,kv转换mp4最简单方法
  • 填充每个节点的下一个右侧节点指针-力扣
  • Vuex3学习笔记
  • Linux fallocate工具用于预分配或释放文件空间的块
  • 4. 路由到控制器 - Laravel从零开始教程
  • Hibernate【inverse和cascade属性】知识要点
  • IOS评论框不贴底(ios12新bug)
  • JavaScript函数式编程(一)
  • JavaScript学习总结——原型
  • php ci框架整合银盛支付
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • Spring Cloud(3) - 服务治理: Spring Cloud Eureka
  • Sublime text 3 3103 注册码
  • tweak 支持第三方库
  • V4L2视频输入框架概述
  • 罗辑思维在全链路压测方面的实践和工作笔记
  • 小李飞刀:SQL题目刷起来!
  • 一起来学SpringBoot | 第十篇:使用Spring Cache集成Redis
  • 以太坊客户端Geth命令参数详解
  • 最简单的无缝轮播
  • 你对linux中grep命令知道多少?
  • elasticsearch-head插件安装
  • 浅谈sql中的in与not in,exists与not exists的区别
  • #APPINVENTOR学习记录
  • (145)光线追踪距离场柔和阴影
  • (2)nginx 安装、启停
  • (4.10~4.16)
  • (Mac上)使用Python进行matplotlib 画图时,中文显示不出来
  • (六) ES6 新特性 —— 迭代器(iterator)
  • (算法)Travel Information Center
  • (转)C#开发微信门户及应用(1)--开始使用微信接口
  • (转)创业家杂志:UCWEB天使第一步
  • ./configure、make、make install 命令
  • .NET 将混合了多个不同平台(Windows Mac Linux)的文件 目录的路径格式化成同一个平台下的路径
  • .Net接口调试与案例
  • @for /l %i in (1,1,10) do md %i 批处理自动建立目录
  • @manytomany 保存后数据被删除_[Windows] 数据恢复软件RStudio v8.14.179675 便携特别版...
  • @ModelAttribute 注解
  • [ 数据结构 - C++]红黑树RBTree
  • [ 云计算 | AWS ] 对比分析:Amazon SNS 与 SQS 消息服务的异同与选择
  • []error LNK2001: unresolved external symbol _m
  • [2016.7.Test1] T1 三进制异或
  • [20180129]bash显示path环境变量.txt
  • [ABC294Ex] K-Coloring