- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试学习 Spring 安全性。
经过一些教程后,我发现其中一些使用 UserRole(s),而另一些则使用实现身份验证的 UserAuthentication 类。我尝试实现(并且有效)的是创建一个自定义 MyUserDetailsService 来实现 UserDetailsService,并授予权限(角色?),如下所示:
private List<GrantedAuthority> buildUserAuthority(Set<UserRole> userRoles) {
Set<GrantedAuthority> setAuths = new HashSet<GrantedAuthority>();
// Build user's authorities
for (UserRole userRole : userRoles) {
setAuths.add(new SimpleGrantedAuthority(userRole.getRole()));
}
List<GrantedAuthority> Result = new ArrayList<GrantedAuthority>(setAuths);
return Result;
}
我想知道用户角色和 GrantedAuthorities 之间有什么区别(例如使用 @PreAuthorize(hasRole...) 与 @PreAuthorize(hasAuthority...) 时),如果它们做同样的事情,为什么两者都存在?或者使用一种与另一种相比的优势。
最佳答案
关于您的评论“有些使用 UserRole,而另一些使用 UserAuthentication”,这实际上是两个不同的概念 - UserRole 用于用户授权,另一个用于用户身份验证。为什么使用一种而不是另一种只是实现一种对用户进行身份验证和授权的解决方案的各种情况的问题。身份验证用于确定用户是否是她所说的用户,而授权是用于确定她是否可以实际执行请求。我可能对你的教程有很大的误解,因为我还没有看过它,但我希望能帮助你理解其中提到的两个不同的概念,以及为什么它们是赞美概念而不是竞争概念。
关于您的实现方向,我认为您的自定义详细信息服务走在正确的轨道上,我过去已经做过无数次了,而且效果很好。关于您关于用户角色和 GrantedAuthority
的问题 - 我认为将 GrantedAuthority
视为一个抽象是安全的,允许您提供自定义字符串 token 来识别/分类某些用户/系统/等。在一组。这基本上也是一个 UserRole 吧?我不是 Spring 安全贡献者,但我的猜测是 GrantedAuthority
的创建是为了简单地抽象其安全域上下文中的角色概念。
通过将角色字符串放入 GrantedAuthority
中,您可以说经过身份验证的用户具有以下权限 - 角色。 @PreAuthorize
采用 EL 字符串,如果用户被“授予”,则该字符串可以与经过身份验证的用户的授予权限集合中的字符串之一匹配。如果用户没有被授予权限/角色,那么她就没有能力执行请求。对于您所问的问题,概念是相同的。
来自 Spring 文档:
@PreAuthorize("hasRole('ROLE_USER')")
public void create(Contact contact);
此外,此页面很有帮助(请参阅:15.3 方法安全表达式): Spring Expressions
我希望这会有所帮助。
关于java - Spring Security - UserRole 或 UserAuthentication,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32908849/
我在这些实体类中遇到此错误。我看过this question ,但我没有 persistence.xml,所以我不确定如何解决这个问题。如果有帮助的话,我正在使用 Dropwizard 构建这些实体。
如何在springSecurity中的userRole这样的域类中使用审计日志? class SecUserSecRole implements Serializable { static
我收到此错误:[SqlException (0x80131904): Invalid object name 'dbo.UserRoles'.],但我无法捕捉到错误所在。我可以从其他表中检索其他数据,
我的项目使用 Microsoft ASP.NET Identity Framework,直到最近才使用 2.0 版并且工作正常。那时我注意到 UserRole 表有 4 列,包含基本相同的数据: 自从
这是我的实体类。 @NamedQueries({ @NamedQuery(name = UsersEntity.NAMED_QUERY_SELECT_ALL_BY_MANAGER_ROLE,
我正在尝试学习 Spring 安全性。 经过一些教程后,我发现其中一些使用 UserRole(s),而另一些则使用实现身份验证的 UserAuthentication 类。我尝试实现(并且有效)的是创
我有一个新的 asp.net (core 1.0) mvc6 web 应用程序,带有最新版本的 identity 3.x。 我想弄清楚我自己必须做什么,以及 Identity 3.x 已经为我提供的即
我对 QCombo Box 中的自定义数据有疑问,这里是一个最小的示例,只是一个空项目,在 ui 中有一个名为 combobox 的 QComboBox。这是c'tor代码: ui->setupUi(
在我的项目中,我有一个 QTreeView 显示来自 QStandardItemModel 的项目。每个项目都有存储在多个用户角色中的数据。 QStandardItem* item = new QSt
我有处理数据的 QSqlQueryModel,我正在尝试将 Qt::UserRole 设置为列但我想不出一种方法来实现我已经实现了数据方法:基本上我想要的是隐藏 ndex.column() 4 的 Q
我想在 QListWidgetItem 中以粗体显示单个单词。根据这个related post ,应该可以使用 QtCore.Qt.UserRole 来达到这个目的。但是,提供的示例代码对我不起作用。
我在使用我指定的字段中的值对 QListView 中的项目进行排序时遇到一些问题。 基本上我想做的是: 检测照片集中的人脸并将其显示在 QListView 中 对人脸(图像)进行聚类 通过将列表中属于
当我尝试使用QtCore.Qt.UserRole和setData存储数据时,它崩溃了:item.setData(QtCore. Qt.UserRole,数据) 有趣的是,非常相似的方法在 PyQt4
我将 Spring-security 与 Spring-boot 结合使用。我的应用程序是一个 POC,目前不需要角色。 我想知道是否可以有一个自定义 UserDetailsService,它在
我是 C++ Qt 的新手。我正在尝试使用与需要使用的值不同的值填充 QComboBox。例如,QComboBox 显示设备名称,但在选择时发送该设备的 mac 地址。我有数据。 我尝试使用 Qt::
我已经安装了 PostgreSQL 并创建了一个具有 super 用户权限的用户“userrole”。也可以通过 python 代码连接。 import psycopg2 conn = psycopg
在 Grails 中,Spring 安全核心插件有助于创建用户和角色域。由于其中的多对多关系,创建了第三个域 UserRole。 UserRole.groovy import org.apache.c
我是 MVC 5 asp.net Identity 模型的新手,正在寻找自定义标准 Asp.net Identity 以满足我的需求的方法。通过博客 TypeCast Exception和一个在 St
我是一名优秀的程序员,十分优秀!