【SpringBoot3】Spring Security 常用注解

【SpringBoot3】Spring Security 常用注解

注:本文基于Spring Boot 3.2.1 以及 Spring Security 6.2.1

Spring Security 6 的常用注解包括以下几种,通过这些注解可以更加方便的控制资源权限。

@Secured :方法执行前检查,直接判断有没有对应的角色

@PreAuthorize:方法执行前检查,根据SpEL表达式执行结果判断是否授权

@PostAuthorize:方法执行后检查,根据SpEL表达式执行结果判断是否授权

要使用以前注解必须增加配置,开启校验功能

// 用于启用方法级别的安全支持

@EnableGlobalMethodSecurity(securedEnabled = true, prePostEnabled = true)

@Secured

方法执行前检查,直接判断有没有对应的角色

示例代码:

@Secured({

"ROLE_USER" })

public void create(Contact contact);

@Secured({

"ROLE_USER", "ROLE_ADMIN" })

public void update(Contact contact);

@Secured({

"ROLE_ADMIN" })

public void delete(Contact contact);

@PreAuthorize

方法执行前检查,根据SpEL表达式执行结果判断是否授权

示例代码:

// 有角色

@PreAuthorize("hasRole('ROLE_ADMIN')")

// 有任一角色

@PreAuthorize("hasAnyRole({'ROLE_USER','ROLE_ADMIN'})")

// 有任一权限

@PreAuthorize("hasAnyAuthority({'user:search','user:edit'})")

其他用法

@PreAuthorize 参数是SpEL表达式,所以还可以有其他用法

1、方法参数值判断,@PreAuthorize("#age>10")

@GetMapping("/age")

@PreAuthorize("#age>10")

public String age(Integer age) {

return "Hello age "+ age;

}

2、调用bean的方法判断

1)创建Bean,判断是否有权限

@Component("au")

public class AuthUtils {

public boolean check(String role) {

Authentication authentication = SecurityContextHolder.

更多创意

JK制服入门科普之初分类
bt365无法登陆

JK制服入门科普之初分类

📅 06-29 🔥 559
扎克伯格开本田飞度,那他的保镖们开什么车?价值如何?
快手视频用什么软件加特效?特效有什么作用?2023-06-08 17:30:073771浏览