【问题标题】:Spring security match Principal info with request paramSpring 安全性将主体信息与请求参数匹配
【发布时间】:2023-03-05 01:13:01
【问题描述】:

所以我试图在没有 IF 和类似东西的情况下验证我的端点,只使用 PreFilter,我基本上有以下内容

@GetMapping(value = "/books/{userId}")
@PreFilter("hasRole('ADMIN') or principal.userId == pathVar.userId")
public List<Books> getBooks(@PathVariable("userId" String userId) {
   //do sth
}

我的问题是让 PreFilter 工作,或者实际上将经过身份验证的主体中的 userId 与路径变量匹配,以便每个用户只能请求自己的书籍。

是的,我知道我可以删除路径变量并在方法中执行 principal.getUserId(),但这意味着我需要一个 if 用户是管理员。

【问题讨论】:

  • 为什么不创建另一个路径,例如 '/my-books` 并注入用户主体?

标签: spring spring-mvc security spring-security spring-security-oauth2


【解决方案1】:

好的,经过多次尝试,我终于找到了方法。如果有人感兴趣: @PreAuthorize("hasRole('ADMIN') 或 #userId == principal.userId")

这样,如果您是管理员,您可以获取任何用户的图书,如果您是用户,则只能获取您自己的图书。

【讨论】:

    猜你喜欢
    • 2021-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-08
    • 2015-08-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多