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

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

在这里插入图片描述
使用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 {
    @Override
    public SaRequest getRequest() {
        return new SaRequestForServlet(SpringMVCUtil.getRequest());
    }

    @Override
    public SaResponse getResponse() {
        return new SaResponseForServlet(SpringMVCUtil.getResponse());
    }

    @Override
    public SaStorage getStorage() {
        return new SaStorageForServlet(SpringMVCUtil.getRequest());
    }

    @Override
    public 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)
    @ResponseBody
    public 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.kler.cn/news/317201.html

相关文章:

  • 输电线塔目标检测数据集yolo格式该数据集包括2644张输电线塔高清图像,该数据集已经过yolo格式标注,具有完整的txt标注文件和yaml配置文件。
  • 论文阅读--Planning-oriented Autonomous Driving(二)
  • C++堆(优先队列)priority_queue
  • 删除topic提示admin token
  • The NCCoE’s Automation of the CMVP
  • 【Oauth2整合gateway网关实现微服务单点登录】
  • k8s云平台部署文档
  • 【MySQL】使用C语言连接数据库
  • Http-浏览器发出⼀个请求到收到响应经历了哪些步骤?
  • 如何使用GLib的单向链表GSList
  • 【软考】cpu的功能
  • Linux环境的JDK安装
  • 【爬虫工具】小红书评论高级采集软件
  • 无人机之可承受风速的影响因素
  • C++ STL容器(二) —— list 底层剖析
  • 信息安全概论期末复习笔记
  • ubuntu如何进行切换内核版本全教程
  • 交易验证码识别数据集
  • ArcGIS Desktop使用入门(三)图层右键工具——拓扑(上篇:地图拓扑)
  • Qanything 2 0 源码解析系列3 文件解析服务
  • golang学习笔记8-运算符与输入
  • torch.stack
  • docker修改默认存储路径和网段
  • [ffmpeg] 录制
  • 2023年06月中国电子学会青少年软件编程(Python)等级考试试卷(二级)答案 + 解析
  • Apache的ab压力测试工具与性能监控
  • 【第十一章:Sentosa_DSML社区版-机器学习之分类】
  • windows C++ 并行编程-使用消息块筛选器
  • PyCharm安装详情教程
  • 基于OpenCV的单目测距