问题描述
我需要在方法级别具有权限,以便具有适当权限的用户只能访问它。该方法将包含令牌作为参数。我需要进行传递令牌的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
}