我有一些困惑。
使用一个非常简单的 Shiro 配置和 jdbcRealm:
[main]
cacheManager = org.apache.shiro.cache.MemoryConstrainedCacheManager
securityManager.cacheManager = $cacheManager
# Create JDBC realm.
jdbcRealm = org.apache.shiro.realm.jdbc.JdbcRealm
# Configure JDBC realm datasource.
ds = org.postgresql.ds.PGSimpleDataSource
ds.databaseName = pg_sensor
***
jdbcRealm.dataSource = $ds
# Configure JDBC realm SQL queries.
jdbcRealm.authenticationQuery = SELECT pass FROM users WHERE name = ?
# user id is a user Role )
jdbcRealm.userRolesQuery = SELECT id FROM users WHERE name = ?
所以,我在代码中使用
userid
作为角色进行授权。
在某些情况下,我需要获取角色名称才能继续执行。有人可以建议如何从
Principal
(SecurityUtils.getSubject().getPrincipal()
)中获取吗?我猜我们需要在
SimpleAccount
类中使用getRoles()
,但无法将其与Principal
连接起来。