JWT登录认证(3拦截器)

Jwt登录认证(拦截器):

        使用拦截器统一验证令牌

        登录和注册接口需要放行

interceptors.LoginInterceptor:(注册一个拦截器)

package com.lin.springboot01.interceptors;import com.lin.springboot01.pojo.Result;
import com.lin.springboot01.utils.JwtUtil;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;import java.util.Map;@Component
public class LoginInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {String token = request.getHeader("Authorization");try {//能否解析成功Map<String, Object> claims = JwtUtil.parseToken(token);//放行return true;} catch (Exception e) {//解析失败,httpServletResponse响应码设置为401response.setStatus(401);return false;}}
}

config.WebConfig:(在config配置项中配置拦截器)

package com.lin.springboot01.config;import com.lin.springboot01.interceptors.LoginInterceptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class WebConfig implements WebMvcConfigurer {@Autowiredprivate LoginInterceptor loginInterceptor;@Overridepublic void addInterceptors(InterceptorRegistry registry) {//登录接口和注册接口不拦截registry.addInterceptor(loginInterceptor).excludePathPatterns("/user/login","/user/register");}
}

controller.ArticleController

package com.lin.springboot01.controller;import com.lin.springboot01.pojo.Result;
import com.lin.springboot01.utils.JwtUtil;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.Map;@RestController
@RequestMapping("/article")
public class ArticleController {@GetMapping("/list")public Result<String> list(/*@RequestHeader(name = "Authorization") String token, HttpServletResponse response*/){//验证token/*  try {Map<String, Object> claims = JwtUtil.parseToken(token); //parseToken是JwtUtil工具类里定义的解析token的方法return Result.success("可以展示数据");} catch (Exception e) {response.setStatus(401);return Result.error("未登录");}*/return Result.success("可以展示数据");}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/185684.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux常用命令——bzcmp命令

在线Linux命令查询工具 bzcmp 比较两个压缩包中的文件 补充说明 bzcmp命令主要功能是在不真正解压缩.bz2压缩包的情况下&#xff0c;比较两个压缩包中的文件&#xff0c;省去了解压缩后在调用cmp命令的过程。 语法 bzcmp(参数)参数 文件1&#xff1a;指定要比较的第一个…

Postman接收列表、数组参数@RequestParam List<String> ids

示例如下: 接口定义如下: GetMapping(value "/queryNewMoviePath")public List<Map<String, Object>> queryNewMoviePath(RequestParam List<String> ids ) {return service.queryNewMoviePath(ids);}postman中测试如下&#xff1a; http://loc…

【TypeScript】枚举类型和泛型的详细介绍

目录 枚举类型 TypeScript泛型介绍 &#x1f3b2;泛型的基本使用 &#x1f3b2;泛型接口的使用 &#x1f3b2;泛型类的使用 &#x1f3b2;泛型的类型约束 总结&#xff1a; 枚举类型&#xff08;Enum&#xff09;详细介绍 定义枚举类型 使用枚举类型 注意事项 泛型…

揭露 bbr 的真相

信 bbr 的伙计们&#xff0c;我又要泼冷水了&#xff0c;哈哈。 从先 bbr 的海报开始&#xff0c;相信大家也是被它唬住的&#xff1a; 注意横坐标标度是对数&#xff0c;这就凸显了优势。 把它展开到自然数坐标&#xff0c;再把其它对照画在一个坐标系里&#xff0c;在此之…

[模版总结] - 树的基本算法2 - BST

BST定义 BST - Binary Search Tree, 即二叉搜索树(有序二叉树) 特性 中序遍历有序查找/插入/删除某个数值可以通过 即树的高度&#xff0c;最优,最坏 . 有多种改进BST可以动态维持插入删除后树结构能尽可能保持平衡 BST基本操作 查询 - 二分查找 搜索数值 - 二分法 class…

Python-pptx教程之二操作已有PPT模板文件

文章目录 简单的案例找到要修改的元素修改幻灯片中的文本代码使用示例 修改幻灯片的图片代码使用示例 删除幻灯片代码使用示例 获取PPT中所有的文本内容获取PPT中所有的图片总结 在上一篇中我们已经学会了如何从零开始生成PPT文件&#xff0c;从零开始生成较为复杂的PPT是非常消…

php连接sqlserver 安装sqlserver 驱动windows系统

第一步下载Windows 上的 Microsoft ODBC Driver for SQL Server ODBC 驱动程序 Microsoft ODBC Driver for SQL Server 直接下载安装即可&#xff0c;安装后可查看安装版本 第二步&#xff1a;下载php_sqlsrv 驱动 安装解压后&#xff0c;会有对应php版本的驱动文件&#xf…

怎样备份电脑文件比较安全

域智盾软件是一款功能强大的电脑监控软件&#xff0c;它不仅具备实时屏幕监控、行为审计等功能&#xff0c;还能够对电脑文件进行备份和管理。下面将介绍域智盾软件如何备份电脑文件&#xff0c;以确保数据安全。 1、开启文档备份功能 部署后台&#xff0c;然后点击文档安全&a…

LT8711UXD 是一款高性能双通道 Type-C/DP1.4 至 HDMI2.0 转换器

1. 描述 LT8711UXD 是一款高性能双通道 Type-C/DP1.4 至 HDMI2.0 转换器&#xff0c;设计用于将 USB Type-C 源或 DP1.4 源连接至 HDMI2.0 接收器。LT8711UXD 集成了一个 DP1.4 兼容接收器和一个 HDMI2.0 兼容发射器。此外&#xff0c;还包括两个 CC 控制器用于 CC 通信以实现…

什么是原生IP与广播IP?如何区分判定?

在代理IP中&#xff0c;我们常常听到原生IP与广播IP&#xff0c;二者有何区别&#xff1f;如何区分呢&#xff1f;下面为大家详细讲解。 一、什么是原生ip 原生IP地址是互联网服务提供商&#xff08;ISP&#xff09;直接分配给用户的真实IP地址&#xff0c;无需代理或转发。此…

不允许你还不了解指针的那些事(二)(从入门到精通看这一篇就够了)(数组传参的本质+冒泡排序+数组指针+指针数组)

目录 数组名的理解 使用指针访问数组 一维数组传参的本质 冒泡排序 二级指针 指针数组 指针数组模拟二维数组 字符指针变量 数组指针变量 二维数组传参的本质 函数指针变量 函数指针变量的创建 函数指针变量的使用 两段有趣的代码 代码一 代码二 typedef关键字 函数指针数组 …

整理笔记——MOS管、三极管、IGBT

一、MOS管 在实际生活要控制点亮一个灯&#xff0c;例如家里的照明能&#xff0c;灯和电源之间就需要一个开关需要人为的打开和关闭。 再设计电路板时&#xff0c;如果要使用MCU来控制一个灯的开关&#xff0c;通常会用mos管或是三极管来做这个开关元件。这样就可以通过MCU的信…