java如何知道用户在Spring security中的所有角色
我使用Spring安全性,所以请登录我正在创建的网站来学习Spring。我使用Hibernate将用户对象映射到允许用户根据其角色查看或不查看页面的其他对象。它起作用了
我在问我是否可以通过使用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个角色,如图中所示)。我不明白这是否取决于我的数据库或我的权限(通过用户名查询)。这两件事中可能有一件是错的
# 1 楼答案
您可以使用两种不同的方法:
对于第一种方法,可以调用
UserDetailsService.loadUserByUsername(String username)
方法对于第二种方法:
SecurityContextHolder.getContext().getAuthentication().getAuthorities();
# 2 楼答案
您可以使用
SecurityContextHolder.getContext().getAuthentication().getAuthorities()
获取当前登录用户角色的集合在authorities变量中有角色集合
多运动一点