使用Spring Security创建新用户时无法同时使用角色和权限

de_xtr

我正在使用以下代码创建内存用户:

@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在检查角色的基础上,使用“自定义”来评估权限。如何向用户提供其他权限,例如读/写?

尝试学习

我的问题是这样吗?如果一个链接方法调用Authority(“ XX”)。roles(“ YY”),则后一个覆盖前者。

正如@dur所提到的,这是它的实现方式。但是请注意,hasRole('XX')它将在您的应用程序中检查Role_XX,而hasAuthroirty('XX')将检查XX取决于您的应用程序如何定义角色。如果在您的应用程序中每个角色都以Role_为前缀,则hasRole提供自动添加该前缀的便捷方法。

我想使用Custom PermissionEvaluator评估权限,然后检查角色。如何向用户提供其他权限,例如读/写?

我想您已经在此代码行中添加了该代码:

.authorities("READ","WRITE")

由于这.roles("USER")将覆盖先前的声明,因此可以将其更改为:

.authorities("READ","WRITE","ROLE_USER") 

并删除roles声明。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用外部表单创建新用户时,WP 用户角色保持为空

无法使用Swift在Xcode中使用Parse 1.7.2和Facebook SDK 4.1创建新用户

无法使用 Firebase (Xamarin.Android) 创建新用户

MySQL 8使用密码无法创建新用户

使用Gerrit UI创建新用户

使用 MySQL 参数创建新用户

无法使用GraphServiceClient更新用户

(Windows)在postgres9.4中使用登录名,createdb和createrole创建新用户,但无法登录?

权限不足,无法完成使用 Azure Active Directory Graph Client API 添加新用户的操作

如何在不重启 spring boot 的情况下使用 Spring Security 添加新用户

如何使用Django Rest框架和自定义用户模型创建新用户

使用Rails创建新用户时创建随机密码

使用Spring Security实现UserDetail和UserDetailService的自定义用户,角色,权限

使用node.js使用Firebase Auth创建新用户时设置Firestore文档

新用户使用Swift和Parse登录时,数据未更新到当前用户

无法使用SQL Workbench / J在Amazon Redshift中创建新用户

为什么我的Flask应用程序无法使用Python Social Auth创建新用户?

无法使用 keycloak 创建新用户:403 unknown_error

使用Firebase创建新用户时如何避免自动登录

如何在laravel 5.7中使用auth()创建新用户时自动注销?

在React中使用Firebase Auth创建新用户时出现内部错误

开始使用PostgreSQL时为什么必须创建一个新用户?

尝试使用 mongodb 创建新用户时出现 e11000 重复键错误

使用Google OAuth2.0的Devise和Omniauth为什么不创建新用户?

与XFCE和SDDM结合使用:新用户无法获得完整的桌面环境...为什么?

使用Spring Data LdapRepository创建新用户失败,并显示LDAP错误代码32

使用ASP .NET Core身份和EntityFrameworkCore注册新用户时出现InvalidOperationException

使用 Rest API 在 Azure DevOps 中创建新用户

使用Rally App SDK创建/更新用户故事