Heim >Backend-Entwicklung >PHP-Tutorial >Apache Shiro-Benutzerhandbuch (4) Realm-Implementierung

Apache Shiro-Benutzerhandbuch (4) Realm-Implementierung

黄舟
黄舟Original
2017-01-18 09:32:381288Durchsuche

Apache Shiro-Benutzerhandbuch (4) Realm-Implementierung

wird im internen Implementierungsmechanismus der Authentifizierung und Autorisierung erwähnt und die endgültige Verarbeitung wird zur Verarbeitung an Real übergeben. Denn in Shiro werden die Benutzer-, Rollen- und Berechtigungsinformationen in der Anwendung letztendlich über Realm abgerufen. Normalerweise erhält Shiro die von Shiro benötigten Verifizierungsinformationen direkt aus unserer Datenquelle in Realm. Man kann sagen, dass Realm ein DAO ist, das sich auf Sicherheits-Frameworks konzentriert.

1. Authentifizierungsimplementierung

Wie oben erwähnt, wird der Authentifizierungsprozess von Shiro schließlich zur Ausführung übergeben Mal wird es die getAuthenticationInfo(token)-Methode von Realm genannt.

Diese Methode führt hauptsächlich die folgenden Vorgänge aus:

1. Überprüfen Sie die zur Authentifizierung übermittelten Token-Informationen

2. Erhalten Sie die Daten aus der Datenquelle (normalerweise einer Datenbank). auf den Token-Informationen Benutzerinformationen erhalten von

3. Benutzerinformationen abgleichen und überprüfen.

4. Wenn die Überprüfung bestanden wird, wird eine AuthenticationInfo-Instanz zurückgegeben, die Benutzerinformationen kapselt.

5. Wenn die Überprüfung fehlschlägt, wird AuthenticationException ausgelöst.

Was wir in unserer Anwendung tun müssen, ist, eine Realm-Klasse anzupassen, die abstrakte Klasse AuthorizingRealm zu erben, doGetAuthenticationInfo () zu überschreiben und die Methode zum Abrufen von Benutzerinformationen neu zu schreiben.

protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authcToken) throws AuthenticationException { 

UsernamePasswordToken token = (UsernamePasswordToken) authcToken; 

User user = accountManager.findUserByUserName(token.getUsername()); 

if (user != null) { 

return new SimpleAuthenticationInfo(user.getUserName(), user.getPassword(), getName()); 

} else { 

return null; 

} 

}

2. Autorisierungsimplementierung

Die Autorisierungsimplementierung ist der Authentifizierungsimplementierung sehr ähnlich. Überladen Sie in unserem angepassten Realm die Methode doGetAuthorizationInfo() und schreiben Sie die Methode neu, um Benutzerberechtigungen zu erhalten. Nutzen Sie einfach die Methode.

protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) { 

String userName = (String) principals.fromRealm(getName()).iterator().next(); 

User user = accountManager.findUserByUserName(userName); 

if (user != null) { 

SimpleAuthorizationInfo info = new SimpleAuthorizationInfo(); 

for (Group group : user.getGroupList()) { 

info.addStringPermissions(group.getPermissionList()); 

} 

return info; 

} else { 

return null; 

} 

}

Das Obige ist der Inhalt der Realm-Implementierung im Apache Shiro-Benutzerhandbuch (4). Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn