java url api_java – 基于URL参数的Spring Security REST API角色

我有一个使用Spring Security和OAuth2在Spring Boot中编写的REST API.资源以这种方式保护:

@Override

public void configure(HttpSecurity http) throws Exception {

http

.authorizeRequests()

.antMatchers("/api/v1/security/**").hasRole("ADMIN");

}

我想基于项目介绍API的新部分,其中权限是细粒度的.让我们考虑一个打印项目配置的简单端点.

GET /api/v1/project/{projectId}/config

如何将资源服务器配置为仅允许具有ROLE_PROJECT_ {projectId} _ADMIN角色的用户访问,而无需手动指定所有项目?

此外,如果此机制具有特定名称,请在评论中告诉我,我可以更改问题标题.

解决方法:

您可以在授权表达式中使用路径值.

public class WebSecurity {

public boolean checkUserHasAccessToProjectId(Authentication authentication, int projectId) {

// here you can check if the user has the correct role

// or implement more complex and custom authorization logic if necessary

}

}

然后在Java安全配置中,您可以引用此方法并将相关路径片段的值传递给它.

http.authorizeRequests()

.antMatchers("/api/v1/project/{projectId}/config")

.access("@webSecurity.checkUserHasAccessToProjectId(authentication,#projectId)")

...

标签:java,rest,spring,spring-security

来源: https://codeday.me/bug/20190611/1218241.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值