authorize(基于注解的权限认证框架)

Sa-Token实战:Java轻量级权限认证框架解析与应用 权限认证是系统安全的核心组件,Java生态中常见的RBAC模型通过角色-权限映射实现访问控制。传统方案如Shiro和Spring Security虽然功能全面,但存在配置复杂的问题。轻量级框架Sa-Token采用简洁API设计,提供开箱即用的会话管理和权限控制能力,支持登录认证、单点登录等场景。其特色在于支持Redis分布式会话存储,通过注解式开发简化了权限验证流程,特别适合快速构建Spring Boot应用的鉴权模块。本文以Sa-Token为例,演示如何实现包括多端登录控制、接口权限拦截等企业级安全需求。 阅读详情

一、是什么

很多项目都会用到权限管理,目前流行的权限框架(Apache Shiro,Spring Security等)在使用的时候都觉得很繁琐,特别是在一些小型的项目中。有时候我会想,如果通过注解的方式,直接把权限注解到访问的接口方法上那该有多好。
authorize就是一个为了解决这个问题,通过注解配置权限,借助拦截器进行权限检查的一个开源权限框架。使用起来就像下面这种感觉。

@Access("manage")
@RequestMapping("index")
public String index() {
    return "this is index page";
}

@Access是这个框架的注解。通过注解配置权限的方式,解决权限认证的问题,不管是写代码还是读代码,都感觉更清晰了许多。

二、如何用

2.1 快速使用

可以参照示例authorize-demo

2.1.1 引入maven依赖

<dependency>
    <groupId>com.github.sunbufu</groupId>
    <artifactId>authorize-starter</artifactId>
    <version>1.0.0-RELEASE</version>
</dependency>

2.1.2 实现IAuthorizeService

在IAuthorizeService的实现类中,至少应该实现3个方法:

  1. 登录方法:登录成功后,把用户信息存放到session中
  2. 鉴权方法(authorize):通过比对用户和请求方法的权限,返回该用户是否可以访问
  3. 鉴权失败方法(authorizeFail):用户没有权限时,需要进行的处理方法

登录:

public User logIn(String userName, String passWord, HttpSession session) {
    User user = users.get(userName);
    if (!user.getPassWord().equals(passWord)) {
        return null;
    }
    session.setAttribute(USER_SESSION_KEY, user);
    return user;
}

鉴权:

@Override
public boolean authorize(String[] access, HttpSession session) {
    User user = (User) session.getAttribute(USER_SESSION_KEY);
    if (user != null && user.getAccess() != null && user.getAccess().isEmpty()) {
        for (String requestAccess : access) {
            if (user.getAccess().contains(requestAccess)) {
                return true;
            }
        }
    }
    return false;
}

鉴权失败:

@Override
public void authorizeFail(HttpServletRequest request, HttpServletResponse response) {
    response.sendRedirect("authorizeError?message=your account have not enought authority");
}

2.1.3 通过注解配置到controller上

@Access("manage")
@RequestMapping("index")
public String index() {
    return "this is index page";
}

2.1.4 完成

authorize的目的是借助注解,快速的完成一些简单的权限管理功能,所以从使用到配置上力争尽量的简单、快捷。
完整示例地址authorize-demo。

2.2 框架介绍

authorize框架主要包括authorize-core和authorize-starter。

2.2.1 authorize-core

authorize-core是整个框架的核心和主要的逻辑部分,主要包括注解Access、拦截器AccessInterceptor、权限认证接口IAuthorizeService。

  1. IAuthorizeService主要包括3个方法的声明,其中有2个方法必须实现:authorize(鉴权)和authorizeFail(鉴权失败),1个方法选择实现:authorizeSuccess(鉴权成功)。
  2. AccessInterceptor会拦截所有的请求,并对注解@Access的进行鉴权。首先会把注解在controller上的权限和注解在具体方法上的权限合并,然后调用IAuthorizeService实现类的鉴权方法authorize。成功调用authorizeSuccess(鉴权成功),失败则调用authorizeFail(鉴权失败)。

2.2.2 authorize-starter

authorize-starter是为spring boot提供的一个快速配置。主要是配置了authorize-core的拦截器AccessInterceptor。

三、总结

authorize是为了快速便捷进行权限管理的开源框架,在github上开源地址是https://github.com/sunbufu/sunbufu-authorize。欢迎大家关注、加星,也欢迎大家随时联系我sunyoubufu@qq.com,谢谢。

SpringBoot2.x系列教程(五十三)SpringBoot2.x集成swagger2配置权限认证参数Authorize 在使用swagger2时,如果api接口需要token等权限认证内容,那么此时可以有两种方案进行解决:方案一,每个请求上面都添加对应token的key和value值。方案二:全局统一添加权限认证的token。 一般情况下token都存放在header中。 引入swagger2依赖 引入对应的swagger2依赖: <dependency> <groupId>io.s... 阅读详情

相关推荐

用74LS160和74LS194搭个复古流水灯:从Multisim仿真到面包板实战(附完整电路图)

本文详细介绍了如何使用74LS160和74LS194芯片搭建复古流水灯电路,从Multisim仿真到面包板实战的全过程。通过解析核心器件特性、提供完整材料清单、仿真验证电路逻辑,以及实际搭建中的布局规划和调试技巧,帮助电子爱好者掌握这一经典数字电路设计项目。

weixin_28736355的博客 388

项目中的注解及其作用

项目中的注解及其作用

我是老伯的博客 689

KALI虚拟机挂代理教程

需要你本地挂了代理,然后通过虚拟机连接本机代理端口,不说废话了,直接说怎么做了。 1.查看选项设置中自己的小飞机的本地端口是多少:(默认是1080) 2.本机win+r打开cmd,输入ipconfig查看本地ip,我的本地ip是192.168.0.107: 2.打开kali虚拟机,编辑ProxyChains配置文件: vi /etc/proxychains.conf 3.在文件末尾的ProxyList中添加物理机本地ip和1080端口作为代理地址: 4.保存并退出即可: esc :wq 回车 5.

qq_34853514的博客 3万+

router中获取vuex_如何优雅的在 Vue 中添加权限控制

前言在一个项目中,一些功能会涉及到重要的数据管理,为了确保数据的安全,我们会在项目中加入权限来限制每个用户的操作。作为前端,我们要做的是配合后端给到的权限数据,做页面上的各种各样的限制。需求因为这是一个工作上的业务需求,所以对于我来说主要有两个地方需要进行权限控制。第一个是侧边菜单栏,需要控制显示与隐藏。第二个就是页面内的各个按钮,弹窗等。流程如何获取用户权限?后端(当前用户拥有的权限列表)-&g...

weixin_39723248的博客 484

Aix升级和安装ssh配置过程

Aix升级和安装ssh配置过程Aix升级和安装ssh配置过程配置前背景配置步骤 Aix升级和安装ssh配置过程 部门IBM小型机的Aix操作系统需要进行ssh补丁修复,修复其实就是ssh版本你的升级,对升级的过程和中途遇到的问题做了记录如下。 配置前背景 操作系统: gdboss2/>uname -u //操作系统的Aix5.3 IBM,020693E5P gdboss2/&gt...

阿阿阿唱的博客 2990

【JESD79-5之】11 IDD, IDDQ, IPP规格参数和测试条件(IDD, IDDQ, IPP Specification Parameters and Test conditions)

【代码】【JESD79-5之】11 IDD, IDDQ, IPP规格参数和测试条件(IDD, IDDQ, IPP Specification Parameters and Test conditions)

m0_61126667的博客 4857

@PreAuthorize注解

例如,v-hasPermi="['monitor:job:add']"会检查用户是否具有monitor:job:add这个权限,如果有,那么相关的UI元素就会显示。用户此时已经登陆系统,假设用户操作的是角色管理模块的查询按钮,当点击该按钮时,会通过网络映射到后端的接口方法。通过这种方式,RuoYi框架可以实现精细的基于权限的访问控制,确保只有具有相应权限的用户才能访问特定的资源。如果当前用户的权限集合中,包含当前被@PreAuthorize标注的方法的权限,则返回true。等集合信息返回给前端。

先知三日 7352

6.4 实战项目:基于Agent内核构建Code Review智能体

本文介绍了一个基于Agent内核构建的智能Code Review系统实战项目。系统采用多Agent协作架构,包含代码质量分析、安全漏洞识别、性能优化建议等核心功能模块。文章详细展示了系统架构设计,采用协调器Agent管理多个专业Agent协同工作,并提供了基础Agent框架和协调器Agent的TypeScript实现代码。项目结合了AI Agent核心原理和多Agent协作机制,实现了自动化的代码审查流程,能够生成详细的审查报告,帮助开发者提升代码质量和安全性。

yonggeit的博客 3109

Java-SpringBoot:用户认证(Authentication)和用户授权(Authorization)

Java安全框架Spring Security、shiro,完成的工作是用户认证(Authentication)和用户授权(Authorization)。用户验证指验证用户是否为系统的合法主体;用户授权是验证某个用户是否有权限执行某个操作

AL ZN的博客 9949

Sigrity Power SI Model Extraction模式如何提取电源网络的S参数和阻抗操作指导(一)

34. 默认格式是BNP format格式,会被Sigrity识别的S参数文件,在仿真完成后,默认会在文件夹中生成bnp和ckt(MCP)文件,无需这步操作。由于port设置的ref Z是50ohm,实际上电源网络的阻抗是没有这么高的,所以S参数回损曲线是基本上全反射的一个状态。Sigrity PowerSI是频域电磁场仿真工具,以下图为例介绍如果用它观测电源的网络的S参数以及阻抗的频域曲线.42. Spice格式的加载进来图标是橙色的,BNP格式的图标是灰色的。

weixin_54787054的博客 1278

yolov26改进 | 融合改进篇 | 基于 MobileNetV4 和双向特征金字塔网络BiFPN的融合改进(全网独家首发)

本文介绍BiFPN与MobileNetV4融合改进的YOLOv26。许多模块单独使用能够涨点,但直接叠加后可能因功能重复、通道不匹配、尺度冲突而掉点,因此融合前必须理解各模块作用。MobileNetV4利用UIB与Mobile MQA构建轻量主干,提升特征提取能力;BiFPN通过可学习权重完成双向多尺度融合,强化大、中、小目标的信息交互。两者优化Backbone与Neck,功能互补、结构冲突较少。本文提供代码、配置、消融对比及Codex修改思路,MobileNetV4也可替换其他主干,便于组合实验与二次创新

Snu77的博客 241

@Authorization 注册,AuthorizeInterceptor

摘要:@Authorization注解用于声明接口权限要求,类似@PreAuthorize,需配合拦截器AuthorizeInterceptor实现认证逻辑。该拦截器在请求到达前校验Token及权限,未通过则返回401/403。若项目未集成Spring Security,需自定义该方案;若已集成,则建议直接使用@PreAuthorize和JWT过滤器。拦截器需通过WebMvcConfigurer注册生效。(98字)

渴望飞翔的小白 541

C# 上位机之海康工业相机开发(SDK)实战教程

海康工业相机的C#开发核心是基于MVS SDK的“初始化→枚举→连接→采集→释放”流程,其中图像回调处理和格式转换是关键。严格按照SDK文档处理设备类型(网口/USB)和像素格式;及时释放图像资源,避免内存泄漏;错误码是排查问题的重要依据(可参考SDK中的“错误码说明”文档)。掌握这些基础后,可结合机器视觉算法(如OpenCV)实现缺陷检测、尺寸测量等高级功能,构建完整的工业视觉系统。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 3830

Spring security在SSM框架中的使用及分析

Spring security框架在SSM框架中的使用及分析----基于权限管理系统1. Spring Security概述1.1 Spring Security简介1.2 安全包括的两个主要操作1.3 spring security框架在登录时实现安全认证的原理2. 在基于SSM框架的权限管理系统中应用Spring Security2.1 Spring Security使用的基本步骤2.1.1 在pom.xml文件中导入依赖2.1.2 在web.xml文件中配置springSecurityFilterCh

weixin_45638486的博客 1207

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

项目精妙(一)--拦截器

目录一个简单的登录拦截,怎么把缓存和自定义的注解合并在一起首先定义一个 注解注解:就是给方法或者变量加上可以便于统一管理的属性值,@Target({ElementType.TYPE, ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface Authorize { String

sinat_肖旭东的博客 338

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

权限的重写,Authorize的控制

基于FormsAuthentication的用户、角色身份认证  一般情况下,在我们做访问权限管理的时候,会把用户的正确登录后的基本信息保存在Session中,以后用户每次请求页面或接口数据的时候,拿到 Session中存储的用户基本信息,查看比较他有没有登录和能否访问当前页面。        Session的原理,也就是在服务器端生成一个SessionID对应了存储的用户数

飞鸟的博客 3703

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Sa-Token:轻量级Java权限认证框架实战指南

权限认证是系统安全的核心组件,Java生态中Spring Security虽是主流但配置复杂。Sa-Token作为国产轻量级框架,以简洁API实现登录认证、权限控制等核心功能,学习成本低且性能优异。其采用Token机制实现会话管理,支持注解式鉴权,覆盖单点登录、OAuth2.0等场景。相比传统方案,Sa-Token在微服务架构中表现突出,通过Redis支持分布式会话,适合中小型项目快速集成。框架内置CSRF防护等安全特性,文档完善且社区活跃,是Spring Security的轻量替代方案。

weixin_33767813的博客 367

Backstage 后端核心服务指南:Permissions Service 权限服务的接入与源码解析

本文基于 Backstage 后端系统(New Backend System)中的 Permissions 核心服务,完整讲解插件后端如何调用权限框架对用户操作进行授权判定,并结合权限框架的概念体系、策略编写、自定义规则与前端集成,给出从接入到落地的全套实战方案。读完本文,你将掌握 `coreServices.permissions` 的正确用法、`authorize`/`authorizeCon

gitblog_01011的博客 804

shiro授权及注解开发

权限思路图 授权 在ShiroUserMapper.xml中新增内容 <select id="getRolesByUserId" resultType="java.lang.String" parameterType="java.lang.Integer"> select r.roleid from t_shiro_user u,t_shiro_user_role ur,t_sh...

qq_44271884的博客 220

SpringSecurity-权限关联与控制

6.3 服务器端方法级权限控制 在服务器端我们可以通过Spring security提供的注解对方法来进行权限控制。Spring Security在方法的权限控制上 支持三种类型的注解,JSR-250注解、@Secured注解和支持表达式的注解,这三种注解默认都是没有启用的,需要 单独通过global-method-security元素的对应属性进行启用 6.3.1.开启注解使用 配...

weixin_30586085的博客 184

从零吃透统一身份认证、RBAC 权限、单点登录 SSO

本文系统讲解了SpringBoot后台开发的三大安全核心——统一身份认证(IAM)、RBAC权限模型和SSO单点登录。首先分析了传统多系统架构存在的四大痛点,包括账号孤岛、权限混乱等问题;然后详细阐述统一身份认证的定义、价值及JWT实现原理,提供单体与微服务两套落地方案;接着介绍RBAC权限模型的三层结构和标准五表设计,对比自研与框架两种实现方式。全文通过底层原理+实战方案+行业对比,帮助开发者构建完整的后端安全体系知识闭环。 (149字)

weixin_44762713的博客 602

基于FormsAuthentication的用户、角色身份认证

一般情况下,在我们做访问权限管理的时候,会把用户的正确登录后的基本信息保存在Session中,以后用户每次请求页面或接口数据的时候,拿到 Session中存储的用户基本信息,查看比较他有没有登录和能否访问当前页面。 Session的原理,也就是在服务器端生成一个SessionID对应了存储的用户数据,而SessionID存储在Cookie中,客户端以后每次请求都会带上这...

155

C# 调用接口时跳过登录认证

C# 跳过登录认证

想去码头整点儿薯条儿~ 286

Spring Security详解/基于配置信息的Spring Security使用/使用自定义登录页面/使用数据库认证/SpEL表达式/服务器端方法级权限控制/页面端标签控制权限

一、Spring Security介绍 Spring Security 的前身是 Acegi Security ,是 Spring 项目组中用来提供安全认证服务的框架。 Spring Security 为基于J2EE企业应用软件提供了全面安全服务。特别是使用领先的J2EE解决方案——Spring框架开发的企业软件项目。人们使用Spring Security有很多种原因,不过通常吸引他们的是在J2EE Servlet规范或EJB规范中找不到典型企业应用场景的解决方案。 特别要指出的是他们不能在 WAR 或

ZaynFox的博客 822
上一篇: 发布jar包到maven中央仓库
下一篇: RestTemplate中的URLEncode
sunbufu
博客等级 码龄11年 17粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值