返回顶部
首页 > 资讯 > 精选 >@EnableGlobalMethodSecurity注解怎么使用
  • 910
分享到

@EnableGlobalMethodSecurity注解怎么使用

2023-07-05 13:07:53 910人浏览 独家记忆
摘要

本文小编为大家详细介绍“@EnableGlobalMethodSecurity注解怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“@EnableGlobalMethodSecurity注解怎么使用”文章能帮助大家解决疑惑,下面跟着小

本文小编为大家详细介绍“@EnableGlobalMethodSecurity注解怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“@EnableGlobalMethodSecurity注解怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

作用

当我们想要开启spring方法级安全时,只需要在任何 @Configuration实例上使用 @EnableGlobalMethodSecurity 注解就能达到此目的。

同时这个注解为我们提供了prePostEnabled 、securedEnabled 和 jsr250Enabled 三种不同的机制来实现同一种功能:

@Configuration@EnableWEBSecurity@EnableGlobalMethodSecurity(jsr250Enabled = true, prePostEnabled = true, securedEnabled = true)public class WebSecurityConfig extends WebSecurityConfigurerAdapter {}

@EnableGlobalMethodSecurity注解怎么使用

prePostEnabled 

prePostEnabled = true 会解 @PreAuthorize 和 @PostAuthorize 两个注解。

从名字就可以看出@PreAuthorize 注解会在方法执行前进行验证,而 @PostAuthorize 注解会在方法执行后进行验证。

public interface UserService {    List<User> findAllUsers();    @PostAuthorize ("returnObject.type == authentication.name")    User findById(int id);    //  @PreAuthorize("hasRole('ADMIN')") 必须拥有 ROLE_ADMIN 角色。    @PreAuthorize("hasRole('ROLE_ADMIN ')")    void updateUser(User user);        @PreAuthorize("hasRole('ADMIN') AND hasRole('DBA')")    void deleteUser(int id);        // @PreAuthorize("principal.username.startsWith('Felordcn')") 用户名开头为 Felordcn 的用户才能访问。    // @PreAuthorize("#id.equals(principal.username)") 入参 id 必须同当前的用户名相同。    // @PreAuthorize("#id < 10") 限制只能查询 id 小于 10 的用户}

常见内置表达式

@EnableGlobalMethodSecurity注解怎么使用

@PostAuthorize:

  • 该注解使用不多,在方法执行后再进行权限验证。

  • 适合验证带有返回值的权限。Spring EL 提供 返回对象能够在表达式语言中获取返回的对象returnObject。

  • 区别在于先执行方法。而后进行表达式判断。如果方法没有返回值实际上等于开放权限控制;如果有返回值实际的结果是用户操作成功但是得不到响应。

  • 允许方法调用,但是如果表达式计算结果为false,将抛出一个安全性异常。

@PreFilter:

  • 集合类型的参数执行过滤,移除结果为false的元素。

  • 基于方法入参相关的表达式,对入参进行过滤。分页慎用!该过程发生在接口接收参数之前。

  • 入参必须为 java.util.Collection 且支持 remove(Object) 的参数。

  • 如果有多个集合需要通过 filterTarget=<参数名> 来指定过滤的集合。

  • 内置保留名称 filterObject 作为集合元素的操作名来进行评估过滤。

// 指定过滤的参数,过滤偶数@PreFilter(filterTarget="ids", value="filterObject%2==0")public void delete(List<Integer> ids, List<String> username)

@PostFilter:

  • 和@PreFilter 不同的是, 基于返回值相关的表达式,对返回值进行过滤。

  • 分页慎用!该过程发生接口进行数据返回之前。

Secured

@Secured注解是用来定义业务方法的安全配置。

在需要安全[角色/权限等]的方法上指定 @Secured,并且只有那些角色/权限的用户才可以调用该方法。

@Secured缺点(限制)就是不支持Spring EL表达式。不够灵活。并且指定的角色必须以ROLE_开头,不可省略。

该注解功能要简单的多,默认情况下只能基于角色(默认需要带前缀 ROLE_)集合来进行访问控制决策。

该注解的机制是只要其声明的角色集合(value)中包含当前用户持有的任一角色就可以访问。

也就是 用户的角色集合和 @Secured 注解的角色集合要存在非空的交集。

不支持使用 SpEL 表达式进行决策。

      @Secured({"ROLE_user"})    void updateUser(User user);    @Secured({"ROLE_admin", "ROLE_user1"})    void updateUser();

jsr250E

启用 JSR-250 安全控制注解,这属于 JavaEE 的安全规范(现为 jakarta 项目)。一共有五个安全注解。

如果你在 @EnableGlobalMethodSecurity 设置 jsr250Enabled 为 true

就开启了 JavaEE 安全注解中的以下三个:

@DenyAll: 拒绝所有访问

@RolesAllowed({“USER”, “ADMIN”}): 该方法只要具有"USER", "ADMIN"任意一种权限就可以访问。这里可以省略前缀ROLE_,实际的权限可能是ROLE_ADMIN

@PermitAll: 允许所有访问

读到这里,这篇“@EnableGlobalMethodSecurity注解怎么使用”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网精选频道。

--结束END--

本文标题: @EnableGlobalMethodSecurity注解怎么使用

本文链接: https://lsjlt.com/news/351985.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • @EnableGlobalMethodSecurity注解怎么使用
    本文小编为大家详细介绍“@EnableGlobalMethodSecurity注解怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“@EnableGlobalMethodSecurity注解怎么使用”文章能帮助大家解决疑惑,下面跟着小...
    99+
    2023-07-05
  • 关于@EnableGlobalMethodSecurity注解的用法解读
    目录作用prePostEnabled Securedjsr250E总结作用 当我们想要开启spring方法级安全时,只需要在任何 @Configuration实例上使用 @...
    99+
    2023-03-19
    @EnableGlobalMethodSecurity注解 @EnableGlobalMethodSecurity @EnableGlobalMethodSecurity注解用法
  • 怎么使用注解
    这篇文章主要介绍“怎么使用注解”,在日常操作中,相信很多人在怎么使用注解问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么使用注解”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!首关之程娲造注注解一旦构造出...
    99+
    2023-06-16
  • redis怎么使用注解
    使用 redis 注解机制可以简化 java 代码中的 redis 交互,提供以下注解类型:@cacheable:缓存方法返回值@cacheput:在方法执行后将值放入缓存@cachea...
    99+
    2024-06-03
    redis
  • 怎么使用的Java 注解
    本篇内容主要讲解“怎么使用的Java 注解”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用的Java 注解”吧!Java 元注解注解(Annotation)是一种可以放在 Java &nb...
    99+
    2023-06-15
  • SpringMVC @RequestMapping注解怎么使用
    这篇文章主要讲解了“SpringMVC @RequestMapping注解怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SpringMVC @RequestMap...
    99+
    2023-06-22
  • java component注解怎么使用
    Java的@Component注解用于标记一个类为组件类,表示它是一个可以被Spring容器管理的bean。使用@Component...
    99+
    2023-09-23
    java
  • spring @Component注解怎么使用
    @Component注解是用来标识一个类是Spring容器的一个组件。使用@Component注解的类会被Spring自动扫描并加入...
    99+
    2023-09-23
    spring
  • Spring的注解怎么使用
    这篇“Spring的注解怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Spring的注解怎么使用”文章吧。非全注解开...
    99+
    2023-06-29
  • Spring注解@Import怎么使用
    今天小编给大家分享一下Spring注解@Import怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。正文在项目开发的过...
    99+
    2023-07-05
  • MyBatis @Select注解怎么使用
    这篇文章主要介绍“MyBatis @Select注解怎么使用”,在日常操作中,相信很多人在MyBatis @Select注解怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”...
    99+
    2023-07-02
  • Spring注解@Scope怎么使用
    @Scope注解用于指定Bean的作用域。Spring提供了多种作用域可选,包括Singleton、Prototype、Reques...
    99+
    2023-08-18
    Spring
  • Java @GlobalLock注解怎么使用
    本篇内容主要讲解“Java @GlobalLock注解怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java @GlobalLock注解怎么使用”吧!GlobalLo...
    99+
    2023-07-04
  • springboot怎么使用redis注解
    在Spring Boot中使用Redis注解,需要完成以下步骤:1. 添加Redis依赖:在`pom.xml`文件中添加Redis相...
    99+
    2023-08-23
    springboot redis
  • @Valid注解怎么规范使用
    这篇文章主要介绍“@Valid注解怎么规范使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“@Valid注解怎么规范使用”文章能帮助大家解决问题。@Valid注解大全及用法规范注解描述@Assert...
    99+
    2023-06-29
  • Spring的@Bean注解怎么使用
    今天小编给大家分享一下Spring的@Bean注解怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Spring @Be...
    99+
    2023-07-02
  • SpringMVC中@InitBinder注解怎么使用
    这篇文章主要讲解了“SpringMVC中@InitBinder注解怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SpringMVC中@InitBinder注解怎么使用”吧!简介@Co...
    99+
    2023-07-02
  • 怎么使用Android注解处理器
    小编给大家分享一下怎么使用Android注解处理器,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1.定义注解推荐New -> Module -> Ja...
    99+
    2023-06-14
  • Spring @Cacheable注解中key怎么使用
    本篇内容介绍了“Spring @Cacheable注解中key怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Spring ...
    99+
    2023-06-22
  • SpringBoot中的@AliasFor注解怎么使用
    本文小编为大家详细介绍“SpringBoot中的@AliasFor注解怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“SpringBoot中的@AliasFor注解怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来...
    99+
    2023-06-30
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作