我在检查用户权限方面遇到了困难,因为该角色是JSON对象的形式。我无法访问该角色。代码如下:
@PreAuthorize("hasAuthority({'\"roleId\":\"1\",\"roleName\":\"USER\"'})")
@GET
public List<String> find() {
return "successfully accessed";
}
答案 0 :(得分:0)
我不知道是否可以使用hasAuthority
指令。
但是,如果您要启动新应用程序或有可能修改现有角色处理,我建议您实施自定义角色映射器。 它看起来像这样:
@Bean
public GrantedAuthoritiesMapper myAuthoritiesMapper() {
return authorities -> {
return authorities.stream()
.map(GrantedAuthority::getAuthority)
.map(s -> {
ObjectMapper mapper = new ObjectMapper();
Role role = mapper.readValue(s, Role.class);
//return roleName or custom string combination of id, name etc.
return role.getRoleName();
})
.map(SimpleGrantedAuthority::new)
.collect(toList());
};
}
和您的角色bean类:
class Role {
private String roleId;
private String roleName;
//getters and setters
}
之后你可以使用:
@PreAuthorize("hasAuthority("ROLE_USER")
(例如USER
user roleName)