我相信没有现成的方法可以做到这一点,因为我们通过在会话中注册用户权限来解决此问题.我们正在使用自定义领域实现,并且我们的权限存储在数据库中.
在我们的自定义领域类中:
@Override
public AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
SimpleAuthorizationInfo info = new SimpleAuthorizationInfo();
Set permissionsSet = //logic to get the permissions here
info.addStringPermissions(permissionsSet);
SecurityUtils.getSubject().getSession().setAttribute("permissions", permissionsSet);
return info;
}
现在,检索权限仅需调用:
SecurityUtils.getSubject().getSession().getAttribute("permissions");
另一种方法是在需要信息的地方注入自定义领域,并使bean使getAuthorizationInfo公开.
@Override
public AuthorizationInfo getAuthorizationInfo(PrincipalCollection principals) {
return super.getAuthorizationInfo(principals);
}
....
yourRealm.getAuthorizationInfo(SecurityUtils.getSubject().getPrincipals()).getStringPermissions();