では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
db での実行に置き換えると、期待される結果が返されます。rest:*
ただし、ログインしているユーザーには id = 1 の割り当てられたロールがあり、id 1 と 1、および id のエントリがありますが、返されます1 には= "rest:*" があります。SecurityUtils.getSubject().isPermitted(new WildcardPermission("rest"));
false
securityrole_securitypermission
securitypermission
action