如何在Spring Boot中隐藏其他用户信息

时间:2018-10-23 11:52:35

标签: spring spring-mvc spring-boot spring-security


我有一个Spring Boot应用程序。
用户可以登录到应用程序,并且可以编辑自己的配置文件。
问题是;用户还可以编辑其他用户个人资料。
例如,用户自己的个人资料编辑链接:

http://localhost/users/edit/1001

但是他还可以访问其他用户的个人资料,例如;

http://localhost/users/edit/2001
http://localhost/users/edit/10
http://localhost/users/edit/5000

您是否知道防止此问题的最佳实践是什么?

3 个答案:

答案 0 :(得分:2)

http://localhost/users/edit/1001网址中的id(1001)应该与登录用户的id(用户主体ID)相同,然后仅允许编辑,否则可以重定向 403访问被拒绝页面。< / p>

您还可以使用如下所示的PreAuthorize注释。

@PreAuthorize("id == authentication.principal.id")

看看thisthis

答案 1 :(得分:1)

您可以做的是,您可以使用Principal从数据库中提取user_id并将其与传递的user_id进行比较,如果两个ID不匹配,则将用户重定向到unauthorized页。

>

答案 2 :(得分:0)

我不会向用户公开/edit端点...我会创建一个/profile/edit端点,并始终路由到当前登录的用户,并让用户编辑管理仪表板,内部工具。