java - 为什么 SimpleAuthorityMapper 的 mapAuthorities 方法在 Spring Securit 中不起作用?
问题描述
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.AuthorityUtils;
import org.springframework.security.core.authority.mapping.SimpleAuthorityMapper;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
我有
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) {
KeycloakAuthenticationProvider keycloakAuthenticationProvider = keycloakAuthenticationProvider();
SimpleAuthorityMapper grantedAuthorityMapper = new SimpleAuthorityMapper();
如果我使用这条线
grantedAuthorityMapper.setDefaultAuthority("ROLE_ADMIN");
然后我可以访问我的 API 端点。但是,如果我使用这两行:
List<GrantedAuthority> grantedAuthorityList = AuthorityUtils.createAuthorityList("ROLE_ADMIN", "ROLE_USER");
grantedAuthorityMapper.mapAuthorities(grantedAuthorityList);
然后我无法访问我的 API 端点。
我认为mapAuthorities
方法不起作用,或者我遗漏了一些东西,或者我做错了什么。
这是最后两行:
keycloakAuthenticationProvider.setGrantedAuthoritiesMapper(grantedAuthorityMapper);
auth.authenticationProvider(keycloakAuthenticationProvider);
}
解决方案
可能是,您需要添加:
@Secured({ "ROLE_USER", "ROLE_ADMIN"})
到你的(控制器)类?
推荐阅读
- javascript - 单击任何链接元素时隐藏侧栏
- python - 如何在特定字符后替换字符串?
- python - 如果索引超出范围,让函数执行不同的操作?
- security - 你能限制谷歌云 API 凭证的访问吗
- cpu-architecture - When does the pipeline take 2 decode stages when there is a RAW dependency in 2 successive instructions
- javascript - How to combine rows with similar id or value
- javascript - 我究竟做错了什么?它不会在所有条件下都运行
- python - Error : "ValueError: invalid literal for int() with base 10: '' while passing values to sql database from Tk entry widget
- function - fmap 的标准前奏名称。常量
- javascript - Iterating on my array in JS but I'm getting a "Cannot read property 'length' of undefined" error