2016-04-21 6 views

Antwort

1

Wie Chamila erwähnte, wäre die Lösung, eine benutzerdefinierte Komponente zu schreiben. Der Benutzeroperations-Listener funktioniert jedoch nicht, da die Domäne zu dem Zeitpunkt, zu dem sie die Listener erreicht, verarbeitet und vom Benutzernamen gelöscht wird.

Es sollte also ein benutzerdefinierter Benutzerspeichermanager sein, der Ihren aktuellen Benutzerspeichermanager erweitert. Lesen Sie this page und schreiben Sie einen benutzerdefinierten Benutzerspeicher-Manager (Durch das Erweitern des aktuellen Benutzerspeicher-Managers werden die Dinge vereinfacht) und überschreiben Sie dann die authenticate(String,Object,boolean)-Methode, um vor dem Aufruf von super(String,Object,boolean) die Existenz des Domänennamens zu überprüfen. Weitere Informationen zum Bereitstellen des benutzerdefinierten Benutzerspeicher-Managers finden Sie auf der gleichen Seite.

1

nicht zulassen Soweit ich weiß, kann man dies nicht nur durch eine Konfiguration zu ändern. Sie können jedoch eine benutzerdefinierte Komponente mit einer Listener-Klasse erstellen, die org.wso2.carbon.user.core.listener.UserOperationEventListener erweitert und deren doPreAuthenticate implementiert, wo Sie den Benutzernamen überprüfen können, wenn er die Benutzerspeicherdomäne enthält, und return false, wenn dies nicht der Fall ist.

Update

Bitte pulasthi7 Antwort verweisen, scheint wie customUserStoreManager ist, was wir hier nicht den Hörer implementieren müssen.

+0

Das Schreiben einer benutzerdefinierten Komponente ist hier die Lösung. Der Benutzeroperationslistener funktioniert jedoch nicht, da die Domäne zu dem Zeitpunkt, an dem sie die Listener erreicht, verarbeitet und vom Benutzernamen gelöscht wird. Daher sollte es ein benutzerdefinierter Benutzerspeicher sein. Siehe meine Antwort unten. – pulasthi7

+0

https://github.com/wso2/carbon-kernel/blob/4.4.x/core/org.wso2.carbon.user.core/src/main/java/org/wso2/carbon/user/core/common /AbstractUserStoreManager.java#L458-#L500 Hier sehe ich nicht, dass die Domain aus dem username-Attribut gelöscht wird, bevor sie die preAuthenticate-Methode erreicht. Daher scheint es, als ob die Listener-Methode funktionieren sollte. Und ich glaube, es wird weniger komplex als das Schreiben von benutzerdefiniertem userStoreManager –

Verwandte Themen