@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,就知道这个方法到底是怎么实现的了