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

[SpringBoot] 8. aop 获取 request response

最近开发有一个需求需要在 aop 中获取request response ,搜索许久没有答案,故此记录📝~


aop 获取

package com.example.easy_im.aop;import com.example.easy_im.Context;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;import java.util.Objects;@Aspect
@Component
@Slf4j
public class TokenAop {@Around("@annotation(com.example.easy_im.annotation.NeedToken)")public Object check(ProceedingJoinPoint pjp) throws Throwable {try {HttpServletRequest servletRequest = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();HttpServletResponse servletResponse = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getResponse();String authorizationHeader = servletRequest.getHeader("Authorization");if(StringUtils.isBlank(authorizationHeader) || servletResponse == null) {servletResponse.setStatus(HttpServletResponse.SC_UNAUTHORIZED);return "请携带Authorization请求头";}// 执行目标方法Object proceed = pjp.proceed();Context.clear();return proceed;} catch (Exception e) {return "fail";}}
}

其他部分代码

package com.example.easy_im.annotation;import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface NeedToken {
}
package com.example.easy_im.controller;import com.example.easy_im.Context;
import com.example.easy_im.annotation.NeedToken;
import com.example.easy_im.dao.UserDao;
import com.example.easy_im.entity.User;
import com.example.easy_im.util.TokenUtil;
import jakarta.annotation.Resource;
import org.springframework.data.domain.Example;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;import java.util.Optional;@RestController
@RequestMapping("/user")
public class UserController {@Resourceprivate UserDao userDao;@PostMapping("/login")public String login(@Validated @RequestBody User user) {User obj = userDao.findUserByNameAndPwd(user.getUserName(), user.getUserPwd());if(obj == null) {return "fail";}return TokenUtil.generateToken(obj);}@DeleteMapping("/logout")@NeedTokenpublic String logout() {String token = Context.getToken();TokenUtil.destroyToken(token);return "ok";}}

相关文章:

[SpringBoot] 8. aop 获取 request response

最近开发有一个需求需要在 aop 中获取request response ,搜索许久没有答案,故此记录📝~ aop 获取 package com.example.easy_im.aop;import com.example.easy_im.Context; import jakarta.servlet.http.HttpServletRequest; impo…...

同学苹果ios的ipa文件应用企业代签选择签名商看看这篇文章你再去吧

同学我们要知道随着互联网的发展,苹果应用市场的火爆,越来越多的开发者加入到苹果应用开发行业中来。同时,苹果应用市场上的应用也在不断增多,用户数量也在不断增加,苹果应用代签是指通过第三方公司为开发者的应用进行…...

【PyCharm Community Edition】:excel操作

Excel操作 相关模块openpyxlxlrdshutil 实例 相关模块 openpyxl 可以对.xlsx,.xlsm,.xltx,.xltm文件格式操作 打开文件:wb_xlsx openpyxl.load_workbook(“文件名”)新建文件:wb_xlsx openpyxl.Workbook()新建sheet表:wb_xlsx_sheet wb…...

证书显示未受信任,生成的证书过期

此时若是导入证书后,证书显示未受信任,则说明我们缺失最新的AppleWWDRCA证书 解决方案: 重新下载AppleWWDRCA并安装。即下载最新的AppleWWDRCA证书,双击安装到“登录”项的钥匙串下;然后再安装你的开发证书或者发布证书…...

VS+Qt+C++ GDAL读取tif图像数据显示

程序示例精选 VSQtC GDAL读取tif图像数据显示 如需安装运行环境或远程调试,见文章底部个人QQ名片,由专业技术人员远程协助! 前言 这篇博客针对《VSQtC GDAL读取tif图像数据显示》编写代码,代码整洁,规则,…...

CSS 选择器-认识并应用选择器

CSS选择器是用来定位HTML或XML文档中的元素的模式。以下是一些常见的CSS选择器,以及对应的样例代码: 标签选择器:选择所有指定标签的元素。 示例代码: p {font-size: 16px; }类选择器:选择所有指定类名的元素。 示…...

【教程】Autojs使用OpenCV进行SIFT/BRISK等算法进行图像匹配

转载请注明出处:小锋学长生活大爆炸[xfxuezhang.cn] 此代码可以替代内置的images.findImage函数使用,但可能会误匹配,如果是对匹配结果要求比较高的,还是得谨慎使用。 runtime.images.initOpenCvIfNeeded(); importClass(java.uti…...

[庆国庆 迎国庆 发文]云计算的概念

庆国庆 迎国庆 国庆发文100%可得专属勋章 一年仅有一次哦 不要错过啦 去发布 https://activity.csdn.net/creatActivity?id10567&spm1011.2480.3001.6900 https://mp.csdn.net/edit?activity_id10567&spm1057.2600.3001.9674 云计算(cloud computing&…...

计算机网络-计算机网络体系结构-概述,模型

目录 一、计算机网络概述 二、性能指标 速率 带宽 吞吐量 时延 往返时延RTT 利用率 三、计算机网络体系结构 分层结构 IOS模型 应用层-> 表示层-> 会话层-> 传输层-> 网络层-> 数据链路层-> 物理层-> TCP/IP模型 一、计算机网络概述 计…...

对示例程序spinner_asyncio.py进行修改使其能运行

学习《流畅的python》第18章 使用asyncio包处理并发,运行示例18-2 spinner_asyncio.py的时候,程序报错如下: D:\fluentPy\chapter17>python spinner_asyncio.py File "D:\fluentPy\chapter17\spinner_asyncio.py", line 30 …...

Linux命令(93)之head

linux命令之head 1.head介绍 linux命令head用来查看文件的前N行内容;默认head查看前10行 2.head用法 head [参数] 文件 head常用参数 参数说明-n从头显示N行,默认显示10行,可以不写-q隐藏文件名,在查看两个及以上文件名的情况…...

使用Visual Studio调试排查Windows系统程序audiodg.exe频繁弹出报错

VC常用功能开发汇总(专栏文章列表,欢迎订阅,持续更新...)https://blog.csdn.net/chenlycly/article/details/124272585C软件异常排查从入门到精通系列教程(专栏文章列表,欢迎订阅,持续更新...&a…...

WebSocket实战之六心跳重连机制

一、前言 WebSocket应用部署到生产环境,我们除了会碰到因为经过代理服务器无法连接的问题(注:该问题可以通过搭建WSS来解决,具体配置请看 WebSocket实战之四WSS配置 ),另外一个问题就是外网环境不稳定经常…...

Webpack 基础入门以及接入 CSS、Typescript、Babel

一、什么是 Webpack Webpack 是一款 JS 模块化开发的技术框架,其运作原理是将多个 JS 文件关联起来构成可运行的应用程序。 Webpack 拥有丰富的 plugins / loaders 插件生态圈,可以让 js 识别不同的语言如 .css, .scss, .sass, .json, .xml, .ts, .vue…...

postgresql-自增字段

postgresql-自增字段 标识列IdentitySerial类型Sequence序列 标识列Identity -- 测试表 create table t_user( -- 标识列自增字段user_id integer generated always as identity primary key,user_name varchar(50) not null unique );-- 自动生成序列 CREATE SEQUENCE public…...

SpringBoot中使用Servlet和Filter

为什么要把Servlet和Filter写在一起,因为使用方式很相似 两种方式 第一种,使用Servlet和Filter 使用Servlet 继承HttpServlet 注册Servlet 使用Filter 1.自定义过滤器 2.注册过滤器 这里注意一点 使用/**无效 至少我这2.4.5版本是这样 过滤所有请求用/* 那么其实还有…...

Monkey命令

shell, monkey, system, Android, 文件系统Monkey, 示例, 简介 一、Monkey测试简介 Monkey测试是Android平台自动化测试的一种手段,通过Monkey程序模拟用户触摸屏幕、滑动Trackball、按键等操作来对设备上的程序进行压 力测试,检测程序多久的时间会发生…...

力扣 -- 279. 完全平方数(完全背包问题)

解题步骤&#xff1a; 参考代码&#xff1a; 未优化代码&#xff1a; class Solution { public:int numSquares(int n) {const int INF0x3f3f3f3f;int msqrt(n);//多开一行&#xff0c;多开一列vector<vector<int>> dp(m1,vector<int>(n1));//初始化第一行…...

在将对象 => JSON格式时,无法序列化部分属性

问题现象: 在ssm项目中&#xff0c;一个controller返回Msg对象&#xff08;自定义对象&#xff0c;包含三个属性&#xff0c;int code&#xff1b;String msg&#xff1b;HashMap map&#xff1b;同时这三个属性都有对应的get和set方法&#xff09;&#xff0c;我的map属性里面…...

用python表格初级尝试

Excel&#xff0c;我的野心 当我输入3,2 就表示在第3行第2列。的单元格输入数据input输入表头 &#xff08;input内除了/&#xff0c;空格 回车 标点符号等 全部作为单元格分隔符&#xff09;由我设置input输入的是行or列 给选项 1. 行 2. 列默认回车或没输入值是列由我设置起…...

阿里:时序课程解决多轮蒸馏不稳定

&#x1f4d6;标题&#xff1a;TCOD: Exploring Temporal Curriculum in On-Policy Distillation for Multi-turn Autonomous Agents &#x1f310;来源&#xff1a;arXiv, 2604.24005v3 &#x1f6ce;️文章简介 &#x1f538;研究问题&#xff1a;如何在多轮自主智能体场景中…...

别再死记硬背截止、放大、饱和了!用Arduino+面包板,5分钟直观理解NPN/PNP三极管三种状态

用Arduino点亮三极管&#xff1a;5分钟可视化实验理解电子开关的三种状态 你是否曾被三极管的"截止"、"放大"、"饱和"这些术语困扰&#xff1f;教科书上的电压公式和载流子运动图虽然精确&#xff0c;却难以形成直观认知。今天我们将用Arduino和…...

基于DGX OpenClaw Stack构建本地AI智能体:从硬件调优到生产部署

1. 项目概述&#xff1a;一站式本地AI智能体栈如果你和我一样&#xff0c;对把大语言模型&#xff08;LLM&#xff09;真正“养”在自己的硬件上&#xff0c;构建一个功能完整、数据私有的智能助手有执念&#xff0c;那么你很可能已经踩过不少坑了。从选模型、搭服务、配工具链…...

电池创新如何跨越量产鸿沟:从实验室到工厂的工程化实践

1. 从实验室到工厂&#xff1a;电池创新的“量产魔咒”最近几年&#xff0c;电池行业绝对是资本和媒体眼中的“香饽饽”。动辄数十亿、上百亿美元的投资砸向新的生产设施和前沿技术&#xff0c;目标直指电动汽车、智能电网乃至整个智慧城市的能源基石。新闻稿里&#xff0c;我们…...

苹果W1芯片如何通过低功耗无线技术重塑TWS耳机体验

1. 无线音频的功耗困局与苹果的破局思路 2016年9月&#xff0c;当苹果在发布会上首次亮出那对剪掉线缆的AirPods时&#xff0c;整个消费电子行业都在问同一个问题&#xff1a;它是怎么做到的&#xff1f;更具体地说&#xff0c;它如何解决了无线耳机领域最核心、也最令人头疼的…...

视频解密神器:3步搞定Widevine加密,重新掌控你的数字内容

视频解密神器&#xff1a;3步搞定Widevine加密&#xff0c;重新掌控你的数字内容 【免费下载链接】video_decrypter Decrypt video from a streaming site with MPEG-DASH Widevine DRM encryption. 项目地址: https://gitcode.com/gh_mirrors/vi/video_decrypter 还在为…...

重温DIRE:走向通用人工智能生成的图像检测

1.摘要生成模型的快速发展提高了图像质量&#xff0c;并使图像合成广泛可用&#xff0c;引起了对内容可信度的关注。为了解决这个问题&#xff0c;我们提出了一种称为通用重建残差分析(UR2EA)的方法来检测合成图像。我们的研究表明&#xff0c;当通过预训练的扩散模型重建GAN和…...

终极指南:如何用WarcraftHelper彻底解决魔兽争霸3的现代系统兼容性问题

终极指南&#xff1a;如何用WarcraftHelper彻底解决魔兽争霸3的现代系统兼容性问题 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 你是否还在为魔兽争…...

太流批了,发票合并神器

今天给大家推荐两款软件&#xff0c;一款是图片转PDF&#xff0c;一款是发票合并工具。有需要的小伙伴可以下载收藏。 第一款&#xff1a;png2pdf png2pdf是一款png图片转PDF的小工具&#xff0c;这类的工具之前也有推荐过&#xff0c;但是今天这款比较特殊。 只要把图片拖入软…...

告别ST-LINK Utility!STM32CubeProg保姆级安装指南(含Java环境配置与常见报错解决)

从ST-LINK Utility到STM32CubeProg&#xff1a;嵌入式开发者的无缝迁移实战手册 当ST官方宣布STM32CubeProg将全面取代ST-LINK Utility时&#xff0c;许多习惯了旧工具的开发者都面临着一个现实问题&#xff1a;如何在不中断项目进度的情况下完成工具链的平稳过渡&#xff1f;作…...