【发布时间】:2015-03-17 06:50:01
【问题描述】:
我使用 Spring 安全性,因此请登录我正在构建的站点以研究 Spring。我使用 Hibernate 将 User 对象映射到允许用户查看或不查看页面的其他对象,根据其角色。它有效。
我问我是否可以通过使用 authorities-by-username-query 知道单个用户拥有的所有角色,而不是检查我的用户对象。 这是我的查询:
authorities-by-username-query="select u1.utente,
u1.email, u2.descrizione, u3.id_autorizzazioni,
u3.autorizzazione from autenticazione u1,
autorizzazione u2, autorizzazioni
u3 where u1.utente = u3.utente and
u2.id_autorizzazione = u3.autorizzazione and u1.email =?"
如果我在 mysql 控制台上编写该查询,我会得到 3 条记录,所以查询是正确的。
这是我的数据库
我用过
Collection<SimpleGrantedAuthority> authorities = (Collection<SimpleGrantedAuthority>) SecurityContextHolder.getContext().getAuthentication().getAuthorities();
但我总是得到一个大小为 1 而不是 3 的集合(我在用户的数据库中有 3 个角色,如图所示)。我不明白它是取决于我的数据库还是我的 authorities-by-username-query。可能这两件事之一是错误的
【问题讨论】:
-
你有什么问题?
-
如何知道一个用户的所有角色
-
你在 1-size Collection 中扮演什么角色?
-
谢谢大家。问题是authorities-by-username-query 查询。作为查询的第二个字段,我应该检索角色。到目前为止,我只得到了一个元素,因为根据我写的错误查询,我正在记录用户的电子邮件。
标签: java spring hibernate spring-security