程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何允许用户仅在Spring Boot / Spring Security中访问自己的数据?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

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

开发过程中遇到如何允许用户仅在Spring Boot / Spring Security中访问自己的数据?的问题如何解决?下面主要结合日常开发的经验,给出你关于如何允许用户仅在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])

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

  1. 创建一个 bean

    public class UserSecurity {
         public @R_197_8487@an hasUserID(Authentication authentication, Long userID) {
            // do your check(s) here
        }
    }
    
  2. 你的表情

    http
     .authorizerequests()
     .antMatchers("/user/{userID}/**")
          .access("@userSecurity.hasUserID(authentication,#userID)")
        ...
    

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

    hasRole('admin') or @userSecurity.hasUserID(authentication,#userID)

解决方法

我有一些这样的休息API:

/users/{user_iD}
/users/{user_iD}/@R_618_6201@
/users/{user_iD}/@R_618_6201@/{order_iD}

我该如何保护它们?每个用户只能看到她/他的数据,但是管理员可以看到所有这些数据。

我必须如何在Spring Security中实现Id == 1的用户看不到Id == 2的用户数据,反之亦然,希望角色admin的用户可以看到全部?

我是否在将会话中的每个方法用户ID与传递给api的user_id参数等同之前进行检查?有没有更好的办法?

ps:我在Spring Security上使用JWT。

大佬总结

以上是大佬教程为你收集整理的如何允许用户仅在Spring Boot / Spring Security中访问自己的数据?全部内容,希望文章能够帮你解决如何允许用户仅在Spring Boot / Spring Security中访问自己的数据?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。