@PreAuthorize注解详解

这篇具有很好参考价值的文章主要介绍了@PreAuthorize注解详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

@PreAuthorize注解会在方法执行前进行权限验证,支持Spring EL表达式,它是基于方法注解的权限解决方案。只有当@EnableGlobalMethodSecurity(prePostEnabled=true)的时候,@PreAuthorize才可以使用,@EnableGlobalMethodSecurity注解在SPRING安全中心进行设置,如下:
 

/**
 * SPRING安全中心
 * @author ROCKY
 */
@EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter {
}

如何使用

①. 注解如何使用?

@Operation(summary = "通过id查询档案报表", description = "通过id查询档案报表")
    @GetMapping("/{reportId}" )
    @PreAuthorize("@pms.hasPermission('archsys_sysarchreport_view')" )
    public R getById(@PathVariable("reportId" ) Long reportId) {
        return R.ok(sysArchReportService.getById(reportId));
    }

②. 自定义权限实现 文章来源地址https://www.toymoban.com/news/detail-690602.html

@PreAuthorize("@pms.hasPermission('archsys_sysarchreport_view')" )

  1. pms是一个注册在 Spring容器中的Bean,对应的类是cn.hadoopx.framework.web.service.PermissionService;
  2. hasPermission是PermissionService类中定义的方法;
  3. 当Spring EL 表达式返回TRUE,则权限校验通过;
  4. PermissionService.java的定义如下:
public class PermissionService {

	/**
	 * 判断接口是否有任意xxx,xxx权限
	 * @param permissions 权限
	 * @return {boolean}
	 */
	public boolean hasPermission(String... permissions) {
		if (ArrayUtil.isEmpty(permissions)) {
			return false;
		}
		Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
		if (authentication == null) {
			return false;
		}
		Collection<? extends GrantedAuthority> authorities = authentication.getAuthorities();
		return authorities.stream().map(GrantedAuthority::getAuthority).filter(StringUtils::hasText)
				.anyMatch(x -> PatternMatchUtils.simpleMatch(permissions, x));
	}

}
@RequiredArgsConstructor
@EnableConfigurationProperties(PermitAllUrlProperties.class)
public class PigResourceServerAutoConfiguration {

	/**
	 * 鉴权具体的实现逻辑
	 * @return (#pms.xxx)
	 */
	@Bean("pms")
	public PermissionService permissionService() {
		return new PermissionService();
	}
}

到了这里,关于@PreAuthorize注解详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 若依框架基于@PreAuthorize注解的权限控制

    目录 一、Java注解(Annotation) 1. 概述         2. Annotation通用定义 (1)@interface (2)@Documented (3)@Target(ElementType.TYPE) (4)@Retention(RetentionPolicy.RUNTIME) 二、基于注解的权限控制 1. 数据权限  2. 角色权限         Java 注解(Annotation)又称 Java 标注,是 JDK5.0 引入的一种注

    2023年04月24日
    浏览(60)
  • SpringSecurity的注解@PreAuthorize(“@ss.hasPermi(‘system:config:list‘)“)实现流程

    今天项目做权限控制,发现项目里别人的做法很方便,特此记录实现过程。 逻辑方法这里省略,具体参考下面的链接 实现思路就是使用SpringSecurity框架,开启权限校验@EnableGlobalMethodSecurity注解,第二步自动校验规则的方法hasPermi()方法,逻辑自己实现,第三步就可以使用

    2024年02月16日
    浏览(49)
  • Spring Boot 注解解读详解

    Spring Boot提供了大量的注解来简化Spring应用的开发。下面我们将详细介绍一些最常用的Spring Boot注解。 1. @SpringBootApplication 这是一个复合注解,用于标记应用的主类。它包含了以下三个注解: @SpringBootConfiguration :等同于Spring的@Configuration,标明该类是配置类,并会把该类作为

    2024年02月06日
    浏览(47)
  • Spring Boot 中的 @Field 注解详解

    Spring Boot 是目前 Java 生态圈中最受欢迎的 Web 应用开发框架之一,它提供了很多优秀的功能和工具,可以帮助开发者快速构建高效、可靠的 Web 应用程序。其中一个重要的功能就是数据绑定和验证,Spring Boot 提供了多种方式来绑定请求参数、表单数据、JSON 数据等。其中,@Fi

    2024年02月11日
    浏览(37)
  • Java、Java EE、Spring和Spring Boot核心注解

    文章迁移至个人博客 此页面包含常用 Java 、 Java EE 、 Spring 、 Spring Boot 、 JPA 常用注解的一站式说明。 @Component注解 @Component 注解表明被注解的类是一个“spring bean/组件”。@Component注解告诉Spring容器自动创建Spring bean。 @Autowired注解 @Autowired 注解用于自动注入 bean。@Autowired 注

    2024年02月15日
    浏览(50)
  • Spring Boot 中 Controller 接口参数注解全攻略与实战案例详解

    在 Spring Boot 应用程序中,Controller 是 MVC 架构模式中的核心组件之一,负责处理 HTTP 请求并返回响应结果。为了更好地映射请求、解析请求参数、执行业务逻辑和生成视图或 JSON 数据,Controller 中广泛使用了各种注解。本文将全面梳理 Spring Boot 中 Controller 接口所使用的各类注

    2024年04月24日
    浏览(39)
  • java spring boot 注解、接口和问题解决方法(持续更新)

    @RestController         是SpringMVC框架中的一个注解,它结合了@Controller和@ResponseBody两个注解的功能,用于标记一个类或者方法,表示该类或方法用于处理HTTP请求,并将响应的结果直接返回给客户端,而不需要进行视图渲染 @Controller         是Spring Framework中的注解,用于

    2024年02月06日
    浏览(55)
  • SpringSecurity安全框架学习——@PreAuthorize的实现原理

    首先我们打开@PreAuthorize注解的源码,然后按住Ctrl并单击PreAuthorize,可以看到在EnableMethodSecurity注解中有引用 (本文使用IDEA,后续不再复述) 查看EnableMethodSecurity源码,可以到,其引用了MethodSecuritySelector 按照惯例,打开MethodSecuritySelector 可以看到,当prePostEnabled=true时,会注

    2023年04月16日
    浏览(39)
  • Spring Boot常用注解

    在 Spring Boot 中,有许多注解用于简化和标识应用程序的不同方面。以下是一些常用的 Spring Boot 注解: @SpringBootApplication : 用于标识主应用程序类。通常与 @EnableAutoConfiguration 、 @ComponentScan 和 @Configuration 一起使用,它是一个复合注解,用于简化配置。 @Controller : 用于标识控

    2024年01月19日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包