我使用以下代码创建内存中用户:
@Bean
public UserDetailsService userDetailsService() {
InMemoryUserDetailsManager manager = new InMemoryUserDetailsManager();
manager.createUser(User.withUsername("user").password("pass").authorities("READ","WRITE").roles("USER").build());
System.out.println("user created");
return manager;
}
我的一个REST控制器方法中有以下代码:
System.out.println("printing authorities..");
User user = (User)SecurityContextHolder.getContext().getAuthentication().getPrincipal();
user.getAuthorities().forEach(item-> System.out.println(item.toString()));
我得到以下输出:
printing authorities..
ROLE_USER
我的问题是,这应该是这样吗?如果一个链式方法调用authorities("XX").roles("YY")
,则后者会写入前者。
我希望在检查角色之前使用自定义PermissionEvaluator
来评估权限。如何为用户提供读/写等附加权限?
答案 0 :(得分:1)
我的问题是,这应该是这样吗?如果做一个链式方法调用 当局(" XX")。角色(" YY"),后者写过前者。
正如@dur所提到的,这是它的实现方式。但请注意
npm install lucaszanella/react-native-dgram-shim
会在您的应用中检查 Role_XX ,而
hasRole('XX')
会检查 XX 。取决于您的应用程序如何定义角色。如果您的应用中的每个角色都以角色_ 作为前缀,则hasRole会提供一种自动附加该前缀的便捷方式。
我想使用Custom PermissionEvaluator来评估权限 检查角色的顶部。我如何提供其他权限 喜欢读/写给用户?
我猜你已经用这一行把它放在你的代码中了:
hasAuthroirty('XX')
由于此.authorities("READ","WRITE")
覆盖了上一个声明,因此您可以将其更改为:
.roles("USER")
并删除.authorities("READ","WRITE","ROLE_USER")
声明。