方法级别的角色和权限Spring Boot

问题描述

我需要在方法级别具有权限,以便具有适当权限的用户只能访问它。该方法将包含令牌作为参数。我需要进行传递令牌的API调用,并获取用户电子邮件ID。收到电子邮件ID后,我需要从数据库获取用户的角色和权限。然后,如果用户具有适当的角色,则我调用方法,否则返回403错误

有没有办法在春季启动时完成这项工作?授权后将有多种方法,并希望在方法级别进行某种注释。

谢谢。

解决方法

@PreAuthorize注释就是您想要的

请阅读以下链接以获取弹簧方法级别的授权 baeldung method authorization

您还需要了解SPEL(Spring表达式语言),因为这是PreAuthorize方法作为参数获取的,可以找到链接here

请注意,spring使用SecurityContext来获取用户数据(角色等),这意味着用户已经通过登录(身份验证)阶段并为该用户加载了SecurityContext

示例:

//other annotations 
@PreAuthorize("hasRole('ROLE_VIEWER')") // hasRole('ROLE_VIEWER') -> this is SPEL
public ResponseEntity<String> methodName() {
 //method
}