使用【Sa-Token】实现Http Basic 认证

devtools/2024/9/24 12:18:19/
http://www.w3.org/2000/svg" style="display: none;">

https://i-blog.csdnimg.cn/direct/0bf98310769f4920bfd0a56c69fb1581.png#pic_center" alt="在这里插入图片描述" />
使用Sa-Token开源架构快速实现Http Basic 认证,如上图
1、springboot环境下直接添加starter即可

<!-- Sa-Token 权限认证,在线文档:https://sa-token.cc -->
<dependency><groupId>cn.dev33</groupId><artifactId>sa-token-spring-boot-starter</artifactId><version>1.39.0</version>
</dependency>

2、非sping环境下,需要自定义 SaTokenContext 实现

<dependency><groupId>cn.dev33</groupId><artifactId>sa-token-servlet</artifactId><version>1.39.0</version>
</dependency>

自定义 SaTokenContext 实现

package org.itdgz.satoken;import cn.dev33.satoken.context.SaTokenContext;
import cn.dev33.satoken.context.model.SaRequest;
import cn.dev33.satoken.context.model.SaResponse;
import cn.dev33.satoken.context.model.SaStorage;
import cn.dev33.satoken.servlet.model.SaRequestForServlet;
import cn.dev33.satoken.servlet.model.SaResponseForServlet;
import cn.dev33.satoken.servlet.model.SaStorageForServlet;public class SaTokenContextForNoSpring implements SaTokenContext {@Overridepublic SaRequest getRequest() {return new SaRequestForServlet(SpringMVCUtil.getRequest());}@Overridepublic SaResponse getResponse() {return new SaResponseForServlet(SpringMVCUtil.getResponse());}@Overridepublic SaStorage getStorage() {return new SaStorageForServlet(SpringMVCUtil.getRequest());}@Overridepublic boolean matchPath(String pattern, String path) {return true;}
}

SpringMVCUtil.java

package org.itdgz.satoken;import cn.dev33.satoken.exception.NotWebContextException;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class SpringMVCUtil {private SpringMVCUtil() {}/*** 获取当前会话的 request 对象* @return request*/public static HttpServletRequest getRequest() {ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();if(servletRequestAttributes == null) {throw new NotWebContextException("非 web 上下文无法获取 HttpServletRequest").setCode(500);}return servletRequestAttributes.getRequest();}/*** 获取当前会话的 response 对象* @return response*/public static HttpServletResponse getResponse() {ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();if(servletRequestAttributes == null) {throw new NotWebContextException("非 web 上下文无法获取 HttpServletResponse").setCode(500);}return servletRequestAttributes.getResponse();}/*** 判断当前是否处于 Web 上下文中* @return /*/public static boolean isWeb() {return RequestContextHolder.getRequestAttributes() != null;}
}

启动初始化时,将自定义的上下文注册

SaTokenContext saTokenContext = new SaTokenContextForNoSpring();SaManager.setSaTokenContext(saTokenContext);

Controller接口

@RequestMapping(value = "/base", method = RequestMethod.GET)@ResponseBodypublic SaResult basic(){try {SaHttpBasicUtil.check("sa:123456");}catch (Exception e){e.printStackTrace();return SaResult.error(e.getMessage());}return SaResult.ok("Http Basic 认证");}

学习地址:https://gitee.com/dromara/sa-token


http://www.ppmy.cn/devtools/116484.html

相关文章

axios封装RESTful API 接口

RESTful API 概念 RESTful API &#xff08;Representational State Transfer&#xff09;是一种设计风格和架构原则&#xff0c;用于构建网络应用程序的接口。它基于 HTTP 协议&#xff0c;并使用一组规范来定义和处理资源。 RESTful API 的核心概念是资源&#xff08;Resou…

性能监控之Python实战SkyWalking链路追踪

文章目录 一、介绍二、SkyWalking支持的语言三、SkyWalking安装3.1 前提准备3.2 先安装ElasticSearch7.X3.3 Skywalking-OAP 安装3.4 Skywalking-UI 界面安装3.5 访问页面检查SkyWalking是否可以访问 四、Python 项目接入SkyWalking4.1 演示项目代码4.2 验证 sw-python4.3 配置…

为什么 Feign 要用 HTTP 而不是 RPC?

一、引言 在现代微服务架构中&#xff0c;服务之间的通信是至关重要的环节。Feign 是一种常用的声明式 HTTP 客户端工具&#xff0c;它简化了服务间的调用过程。然而&#xff0c;在服务通信的领域中&#xff0c;除了基于 HTTP 的方式&#xff0c;还有 RPC&#xff08;Remote Pr…

无人机之AI跟踪篇

无人机的AI识别技术依托于计算机视觉和深度学习技术&#xff0c;实现了对目标的快速精准识别&#xff0c;在多个领域展现出了巨大的应用潜力和价值。以下是对无人机AI识别技术的详细解析&#xff1a; 一、无人机AI识别算法的基础原理 无人机AI识别算法主要基于先进的计算机视觉…

架构设计笔记-5-软件工程基础知识

知识要点 按软件过程活动&#xff0c;将软件工具分为软件开发工具、软件维护工具、软件管理和软件支持工具。 软件开发工具&#xff1a;需求分析工具、设计工具、编码与排错工具。 软件维护工具&#xff1a;版本控制工具、文档分析工具、开发信息库工具、逆向工程工具、再工…

第十章 从0-1搭建一个简单的JavaWeb系统(二)

目录 一、完整工程目录结构 ​二、导入资源 三、编写代码 四、最终运行效果 五、未完待续 本章节的每一段代码&#xff0c;建议全部自己敲一遍&#xff0c;加深印象&#xff0c;切勿直接复制黏贴。 一、完整工程目录结构 本章实现页面登录功能&#xff0c;工程代码结构…

[SWPUCTF 2021 新生赛]Do_you_know_http

很基础的一题&#xff0c;就是修改发送的数据包 1.拿到题目&#xff0c;他让我们使用这个WLLM浏览器&#xff0c;那我们就用bp抓包&#xff0c;修改成User-Agent:WLLM 2.得到响应有个a.php文件&#xff0c;那我们就访问一下&#xff0c;发现请求权限不够&#xff0c;ip地址不对…

基于微信小程序的宠物寄养平台的设计与实现+ssm(lw+演示+源码+运行)

摘 要 随着科技和网络的进步&#xff0c;微信小程序技术与网络、生活贴和的更加紧密。需要依靠客户端的单机系统逐渐被淘汰&#xff0c;利用互联网可以处理大量数据的新型系统如雨后春笋般迅速发展起来。这类系统和信息化时代的同步发展对传统的办公管理方式造成了很大的压力。…