【发布时间】:2013-10-10 01:45:09
【问题描述】:
在shiro.ini 中,我声明了以下 SQL 查询:
jdbcRealm.authenticationQuery = SELECT password FROM Person WHERE email = ?
jdbcRealm.userRolesQuery = SELECT id FROM SecurityRole WHERE id = (SELECT securityRole_id FROM Person WHERE email = ?)
jdbcRealm.permissionsQuery = SELECT action FROM SecurityPermission WHERE id = (SELECT permissions_id FROM securityrole_securitypermission WHERE securityrole_id = ?)
当我用1 替换最后一个查询中的? 并在数据库上运行它时,它会返回预期的结果:rest:*
但是SecurityUtils.getSubject().isPermitted(new WildcardPermission("rest")); 将返回false,尽管登录的用户分配了一个id = 1 的角色,securityrole_securitypermission 有一个id 为1 和1 的条目,而securitypermission 的id 为1 有action = "rest: *"。
【问题讨论】: