【发布时间】:2016-08-13 12:26:33
【问题描述】:
好吧,我很困惑。
在 Shiro 中,我有自己的领域 (DatastoreRealm),它扩展了 AuthorizingRealm。在我的 DatastoreRealm 中,我有方法“clearCachedAuthorizationInfo”,当这些权限发生变化时,我可以清除用户权限等(然后重新检查)。
为了使用该方法,我必须访问我的 DatastoreRealm 对象。 我通过以下方式执行此操作...
private static Realm lookupRealm(String realmName) {
SecurityManager securityManager = SecurityUtils.getSecurityManager();
RealmSecurityManager realmSecurityManager = (RealmSecurityManager) securityManager;
Collection<Realm> realms = realmSecurityManager.getRealms();
for (Realm realm : realms) {
if (realm.getName().equalsIgnoreCase(realmName)) {
log.info("look up realm name is : " + realm.getName());
return realm;
}
}
return null; }
这似乎工作正常。它返回一个“DatastoreRealm”对象。
虽然当我调用这个方法的时候,我不得不做以下事情……
DatastoreRealm dsRealm = (DatastoreRealm) lookupRealm("rfRealm");
这会引发“ClassCastException”告诉我...
rf.gae.DatastoreRealm cannot be cast to rf.gae.DatastoreRealm
这是如何/为什么会发生的???
如果我不投射,而只是使用“Realm”对象,则“clearCachedAuthorizationInfo”对我不可用!
提前感谢您的帮助!
【问题讨论】:
标签: apache classcastexception shiro