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

@PermitAll注解和@PreAuthorize注解

@PermitAll

Spring Security中的@PermitAll注解‌是一个标记注解,用于指示一个特定的类或方法可以被任何用户访问,无论用户是否经过身份验证或拥有任何特定的角色。这个注解通常用于那些不需要进行权限校验的接口或方法上

例如公开的API端点或主页,希望任何人都能访问,可以使用@PermitAl注解


@RestController
public class PublicApiController {
    @PermitAll
    @GetMapping("/public/data")
    public ResponseEntity<String> getPublicData() {
        return ResponseEntity.ok("这是公开数据, 任何人都可以访问。");
    }
}

在Spring Security中,@PermitAll注解可以应用于Controller层的方法上,表示该方法所对应的URL可以被所有用户访问,无需进行权限校验

@RestController
public class UserController {
    @PermitAll
    @GetMapping("/api/public")
    public String publicMethod() {
        return "这是公开的方法";
    }
}

在这个例子中,publicMethod()方法使用了@PermitAll注解,意味着无论用户是否具有相应的权限,都可以访问/api/public路径‌

@PreAuthorize 注解

在开源项目中但凡使用了Spring Security框架的总会在部分接口上看到这个方法

很明显这是个创建用户的接口,我们都能看出这个注解的大致意思,就是判断登录的人是否有添加权限
下面来详细说明一下@ss.hasPermission(‘visit:questionnaire:query’)是什么意思,怎么用的
首先,@PreAuthorize是 Spring Security 内置的前置权限注解,添加在接口方法上,声明需要的权限,实现访问权限的控制。
实现原理:

当 @PreAuthorize 注解里的 Spring EL 表达式返回 false 时,表示没有权限。
而 @PreAuthorize(“@ss.hasPermission(‘visit:questionnaire:query’)”) 表示调用 Bean 名字为 ss 的 hasPermission(…) 方法,方法参数为"visit:questionnaire:query" 字符串。

所以你只需要找到在哪儿创建的Bean,并且Bean的名字是ss,就知道这个方法到底是怎么实现的了


http://www.kler.cn/a/405530.html

相关文章:

  • 日常开发记录-正确的prop传参,reduce搭配promise的使用
  • 02. Python基础知识
  • 锂电池学习笔记(一) 初识锂电池
  • 目标驱动学习python动力
  • SAP PI/PO Proxy2JDBC SQL_QUERY动态接口示例
  • k8s 集群安装
  • Next.js 开发教程(三):CSS 样式的完整指南
  • VLAN资源池(Java Python JS C++ C )
  • 如何在 React 项目中应用 TypeScript?应该注意那些点?结合实际项目示例及代码进行讲解!
  • 已解决centos7 yum报错:cannot find a valid baseurl for repo:base/7/x86_64的解决方案
  • 【c++笔试强训】(第十六篇)
  • JAVA八股与代码实践----接口与抽象类的区别和用法
  • 利用KDJ指标显示多空K线(附带源码)
  • Unity3D 客户端网络角色的操作与行为分离设计详解
  • 一文详解kafka知识点
  • LayaAir引擎荣获开源大赛一等奖
  • Linux下pwm开发与框架源码分析
  • javaScript之箭头函数
  • 阿里推理模型来了!Marco-o1 发布即开源
  • 飞凌嵌入式T113-i开发板RISC-V核的实时应用方案
  • 记录一个奇怪的前端布局现象
  • 后台通用tag面包屑
  • Figma入门-文字、样式、链接、动作
  • 多联机空调节能集中控制系统
  • 机器学习——数据标注
  • 微搭低代码入门09对象