Ok, ich bin offiziell verwirrt.Apache Shiro: ClassCastException auf Realm
In Shiro habe ich mein eigenes Realm (DatastoreRealm), das AuthorizingRealm erweitert. In meinem DatastoreRealm habe ich die Methode "clearCachedAuthorizationInfo", die es mir ermöglicht, die Benutzerrechte usw. zu löschen (und dann erneut zu überprüfen), wenn sich diese Berechtigungen im laufenden Betrieb ändern.
Um zu dieser Methode zu gelangen, muss ich auf mein DatastoreRealm Objekt zugreifen. Ich tue dies in der folgenden Art und Weise ...
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; }
Dies scheint gut zu funktionieren. Es gibt mir ein "DatastoreRealm" -Objekt zurück.
Obwohl, wenn ich diese Methode aufrufen, bin ich gezwungen, um folgende Aktionen ...
DatastoreRealm dsRealm = (DatastoreRealm) lookupRealm("rfRealm");
die eine "Classcast" wirft mir zu sagen ...
rf.gae.DatastoreRealm cannot be cast to rf.gae.DatastoreRealm
Wie/Warum passiert dies???
Wenn ich nicht werfen DO, und einfach die „Realm“ verwenden Objekt, das „clearCachedAuthorizationInfo“ ist mir nicht möglich!
Vielen Dank im Voraus für die Hilfe!
Altes Thema aber: Könnten Sie so freundlich sein und teilen, welchen Rahmen haben Sie verwendet? Und wie hast du "hot reload" deaktiviert? – PastorPL