Sa-Token拦截全部接口必须登录-然后自定义注解来匿名登录-作为权限框架支持,并且同时使用了注解和路由的拦截器模式,此部分的配置如下:
场景
在博主目前正在开发的项目中,就采用了Sa-Token作为权限框架支持,并且同时使用了注解和路由的拦截器模式,此部分的配置如下:
@Override
public void addInterceptors(InterceptorRegistry registry) { List<String> notMatches = CollectionUtil.newArrayList(); registry.addInterceptor(new SaAnnotationInterceptor()).addPathPatterns("/**"); registry.addInterceptor(new SaRouteInterceptor((req, res, handler) -> { SaRouter.match("/**").notMatch(notMatches).check(r -> StpUtil.checkLogin()); })).addPathPatterns("/**");
}
在上述的配置中代表除开notMatches中其他所有的路径都会进行StpUtil.checkLogin()方法来验证是否登录,如果没有登录则会未登录的异常。
但是有的时候又一个个去配置路径太麻烦了,特别是许多接口模块的情况下,于是采用允许匿名访问的注解模式就为一个不错的方法。
引入
首先我们需要新建一个注解,允许它在类及方法上使用:
/** * 匿名接口,提供SaToken中缺失的匿名注解访问 * * @author Licoy * */
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.METHOD,})
public @interface AnonymousApi {
}
后面我们再到Sa-Token的拦截器配置中判断执行的方法是否含有此注解,如果有则使用SaRouter.stop()停止匹配,跳出函数。
现在我们修改一下上一小节中的代码:
@Override
public void addInterceptors(InterceptorRegistry registry) { List<String> notMatches = CollectionUtil.newArrayList(); registry.addInterceptor(new SaAnnotationInterceptor()).addPathPatterns("/**"); registry.addInterceptor(new SaRouteInterceptor((req, res, handler) -> { if (handler instanceof HandlerMethod) { Method method = ((HandlerMethod) handler).getMethod(); if (method.getAnnotation(AnonymousApi.class) != null || method.getDeclaringClass().getAnnotation(AnonymousApi.class) != null) { SaRouter.stop(); } } SaRouter.match("/**").notMatch(notMatches).check(r -> StpUtil.checkLogin()); })).addPathPatterns("/**");
}
至此,我们就可以愉快的使用@AnonymousApi来允许接口的匿名访问了。
后记
在权限框架中,我们会有很多的特殊路径权限,不得不说Sa-Token为我们提供了一种方便快捷的方式,我看了文档几分钟就完全配置出来了,要是按照以前使用Shiro或者Spring Security,至少都要以天为单位(又或者是因为现在的经验甚比以前了)
相关文章:
Sa-Token拦截全部接口必须登录-然后自定义注解来匿名登录-作为权限框架支持,并且同时使用了注解和路由的拦截器模式,此部分的配置如下:
场景 在博主目前正在开发的项目中,就采用了Sa-Token作为权限框架支持,并且同时使用了注解和路由的拦截器模式,此部分的配置如下: Override public void addInterceptors(InterceptorRegistry registry) { List<String> n…...
公司企业端口映射
文章目录 前言如何进行内网映射打开路由器管理网址设置端口映射 前言 公司为了提供稳定的网络服务,需要拥有一个稳定的IPV4的网络地址,一般公司有点规模的,会去电信局里面拉一根专门的网线,获取稳定的全球IPV4地址。 一个IPV4地…...
gitlab安装和使用
gitlab安装和使用 1.下载必要的依赖 sudo yum install curl openssh-server openssh-clients postfix cronie #需要执行sudo service postfix start #配置邮箱的sudo chkconfig postfix on #配置邮箱的#这句是用来做防火墙的,避免用户通过ssh方式和http来访问。su…...
【论文阅读】DALL·E: Zero-Shot Text-to-Image Generation
OpenAI第一代文本生成图片模型 paper:https://arxiv.org/abs/2102.12092 DALLE有120亿参数,基于自回归transformer,在2.5亿 图片-文本对上训练的。实现了高质量可控的text to image,同时也有zero-shot的能力。 DALL-E没有使用扩…...
说一下 toRef、toRefs,以及他们的区别
toRef:创建一个新的Ref变量,转换Reactive对象的某个字段为Ref变量 toRefs:创建一个新的对象,它的每个字段都是Reactive对象各个字段的Ref变量 说一下toRef 先定义一个reactive对象 interface Member {id: numbername: string } c…...
修改Android Studio默认的gradle目录
今天看了一下,gradle在C盘占用了40多G。我C盘是做GHOST的,放在这里不方便。所以就要修改。 新建目录名(似乎无必要) ANDROID_SDK_HOMEG:\SOFTWARES\android-sdk GRADLE_USER_HOMEG:\SOFTWARES\.gradle 修改目录 File->Setti…...
鲁大师电动车智能化测评报告第二十三期:实测续航95km,九号Q90兼顾个性与实用
鲁大师第二十三期智能化电动车测评排行榜数据来源于鲁大师智慧实验室,测评的车型均为市面上主流品牌的主流车型。截止目前,鲁大师智能化电动车测评的车型高达130余台,且还在不断增加和丰富中。 一、测评依据 鲁大师电动车智能化测评体系包含车辆的状态采集与管理硬件系统、车辆…...
初始化项目骨架(Web3项目一实战之一)
暌违将近一年的时光,也该是时候来几个项目实践。要不,当再次翻看 玩以太坊链上项目的必备技能(…solidity之旅X) ,却未曾见有关于 Web3 项目的实战博文,不免让人唏嘘! 其实,在我敲下玩以太坊链上项目的必备技能这些文字时,心中早有了势必要弄出一个Web3的项目(当然,通…...
在opencv OpenCV中打开相机摄像头,用分水岭算法实时实现图像的分割与提取
import cv2 import numpy as np# 定义回调函数 def callback(x):pass# 打开摄像头 cap cv2.VideoCapture(0)# 创建窗口和控件 cv2.namedWindow(image) cv2.createTrackbar(threshold, image, 0, 255, callback)# 初始化参数 bgdModel np.zeros((1, 65), np.float64) fgdModel…...
CodeWhisperer 的正确使用
1、重点: 重点1: 推出 Amazon Bedrock。这项新服务允许用户通过 API 访问来自 AI21 Labs、Anthropic、Stability AI 和亚马逊的基础模型。(Anthropic 就是之前跟 ChatGPT 掰手腕的 Claude 的模型。Stability AI 就是 Stable Diffusion 背后的…...
selenium xpath定位
selenium-xpath定位 <span style"background-color:#2d2d2d"><span style"color:#cccccc"><code class"language-javascript">element_xpath <span style"color:#67cdcc"></span> driver<span styl…...
「我在淘天做技术」音视频技术及其在淘宝内容业务中的应用
作者:李凯 一、前言 近年来,内容电商似乎已经充分融入到人们的生活中:在闲暇时间,我们已经习惯于拿出手机,从电商平台的直播间、或者短视频链接下单自己心仪的商品。 尽管优质的货品、实惠的价格、精致的布景、有趣的…...
el-input 输入后失去焦点
说了是无情,写了更无情,你说你看了不点赞是不是更绝情?遇到这种神奇的BUG,也是大家无奈的神情。 来分析看代码: <div class"card-item input-item" :class"{ w-100: followRadio 2 }"v-for&…...
docker创建并访问本地前端
docker创建并访问本地前端,直接上命令: 安装nginx镜像: docker pull nginx 查看已安装的nginx: docker images 创建DockerFile文件,直接在当前文件夹种创建 touch Dockerfile 在Dockerfile写入内容: F…...
数据结构之单链表基本操作
🤷♀️🤷♀️🤷♀️ 今天给大家分享的是单链表的基本操作。 清风的个人主页 🎉欢迎👍点赞✍评论❤️收藏 😛😛😛希望我的文章能对你有所帮助,有不足的地方还请各位…...
Python 实践
文章目录 一、HttpRequests 一、Http Requests python——Request模块...
使用easyui前端框架快速构建一个crud应用
本篇文章将会详细介绍jquery easyui前端框架的使用,通过创建一个crud应用来带大家快速掌握easyui的使用。 easyui是博主最喜欢的前端框架,没有之一,因为它提供了多种主题,而且有圆润的各种组件。 一、快速开始 easyui的官网地址&…...
Logback从添加依赖,到配置给中打印级别,archive相关信息配置,在项目中的常见的用法,一个完整的过程
添加Logback依赖: 在您的Maven或Gradle项目中,添加Logback依赖。例如,在Maven中,可以将以下依赖添加到pom.xml文件中: <dependency><groupId>ch.qos.logback</groupId><artifactId>logback-c…...
虚假内容检测,谣言检测,不实信息检测,事实核查;纯文本,多模态,多语言;数据集整理
本博客系博主个人理解和整理所得,包含内容无法详尽,如有补充,欢迎讨论。 这里只提供数据集相关介绍和来源出处,或者下载地址等,因版权原因不提供数据集所含的元数据。如有需要,请自行下载。 “Complete d…...
数据结构:单链表
文章目录 🍉前言🍉基本概念🍉链表的分类🍌单链表节点的结构🍌创建节点🍌打印链表🍌插入和删除🥝尾插🥝头插🥝尾删🥝头删🥝指定位置之前…...
物流成本分析怎么做?一文盘点物流成本分析5大法
最近发现一个很有意思的数据:企业物流成本里,运输费通常只占40%-60%。也就是说,你花大力气去算运费,最多只能影响到物流总成本的一半。物流成本是一个系统性概念,运费只是其中的一部分。像仓储、库存、管理这类成本&am…...
如何快速为所有Win32应用添加Mica效果:Mica For Everyone完整指南
如何快速为所有Win32应用添加Mica效果:Mica For Everyone完整指南 【免费下载链接】MicaForEveryone Mica For Everyone is a tool to enable backdrop effects on the title bars of Win32 apps on Windows 11. 项目地址: https://gitcode.com/gh_mirrors/mi/Mic…...
DS4Windows完整指南:3步让PlayStation手柄在Windows电脑上完美运行
DS4Windows完整指南:3步让PlayStation手柄在Windows电脑上完美运行 【免费下载链接】DS4Windows Like those other ds4tools, but sexier 项目地址: https://gitcode.com/gh_mirrors/ds/DS4Windows 想要在Windows电脑上使用PlayStation手柄畅玩所有游戏吗&am…...
Applite镜像加速:为Homebrew Casks带来流畅的GUI管理体验
Applite镜像加速:为Homebrew Casks带来流畅的GUI管理体验 【免费下载链接】Applite User-friendly GUI macOS application for Homebrew Casks 项目地址: https://gitcode.com/gh_mirrors/ap/Applite Applite是一款专为macOS设计的开源GUI应用程序࿰…...
MATLAB里pchip插值函数怎么用?手把手教你复现并理解它的核心算法
MATLAB中pchip插值函数的深度解析与算法复现 1. 从黑盒调用到算法透明化 当我们第一次接触MATLAB的pchip函数时,通常只是简单地调用interp1(x,y,xi,pchip)就能得到平滑的插值曲线。但作为一名追求技术深度的工程师或研究者,仅仅知道如何使用是远远不够的…...
NS-USBLoader:Switch玩家的全能文件管理解决方案
NS-USBLoader:Switch玩家的全能文件管理解决方案 【免费下载链接】ns-usbloader Awoo Installer and GoldLeaf uploader of the NSPs (and other files), RCM payload injector, application for split/merge files. 项目地址: https://gitcode.com/gh_mirrors/ns…...
别墅户外照明,别让安全与氛围成为单选题:一份兼顾两者的工程指南
上个月底,我去给一个已经入住了大半年的项目做回访。业主是我很熟的朋友,晚上一起在他家院子里喝茶。茶过三巡,他指着院角那盏造型别致的壁灯,说了句让我印象很深的话:这灯,刚装好的时候觉得特有格调&#…...
DeepSeek 接入项目全纪录:从踩坑到跑通
Issue 概述 先来看看提交这个 Issue 的作者是为什么想到这个点子的,以及他初步的核心设计概念。?? 本 PR 实现了 Apache Gravitino 与 SeaTunnel 的集成,将其作为非关系型连接器的外部元数据服务。通过 Gravitino 的 REST API 自动获取表结构和元数据…...
Codeforces竞赛预测神器Carrot:当API失效时开发者如何应对
Codeforces竞赛预测神器Carrot:当API失效时开发者如何应对 【免费下载链接】carrot A browser extension for Codeforces rating prediction 项目地址: https://gitcode.com/gh_mirrors/carrot1/carrot 作为Codeforces竞赛平台上广受欢迎的评级预测工具&…...
ESP32-S2开源USB测试工具USB Insight Hub详解
1. USB Insight Hub 项目概述USB Insight Hub 是一款基于 ESP32-S2 无线 SoC 的开源 USB 测试工具,由厄瓜多尔公司 Aerio Solutions SAS 开发,主要面向开发者和技术爱好者。这款设备通过 USB Type-C 端口连接到计算机,并扩展出三个下游端口&a…...
