您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何允许用户仅在Spring Boot / Spring Security中访问自己的数据?

如何允许用户仅在Spring Boot / Spring Security中访问自己的数据?

在任何@Controller@RestController注解豆你可以使用Principal直接作为方法的参数。

    @RequestMapping("/users/{user_id}")
    public String getUserInfo(@PathVariable("user_id") Long userId, Principal principal){
        // test if userId is current principal or principal is an ADMIN
        ....
    }

如果您不想在中进行安全检查,则Controller可以使用 Spring EL 表达式。您可能已经使用了一些内置表达式,例如hasRole([role])

您可以编写自己的表达式。

创建一个 bean

public class UserSecurity {
     public boolean hasUserId(Authentication authentication, Long userId) {
        // do your check(s) here
    }
}

用你的表情

http
 .authorizeRequests()
 .antMatchers("/user/{userId}/**")
      .access("@userSecurity.hasUserId(authentication,#userId)")
    ...

令人高兴的是,您还可以组合以下表达式:

    hasRole('admin') or @userSecurity.hasUserId(authentication,#userId)
Java 2022/1/1 18:18:00 有530人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶