2016-06-30 6 views
0

Ich versuche, eine Login Ablauf Funktion in einer Anwendung zu implementieren, mit dem Wildfly Database Authentication Module ausgeführt werden.Wildfly Database Authentication: Hinzufügen von Datumsberechnungen in die Prinzipien Abfrage

Da scheint es keinen Weg, um benutzerdefinierte Code auf eine erfolgreiche Authentifizierung auslösen, oder jede Art von Httpsessionlistener Art von Ansatz, um diese Informationen zu erhalten, ich dachte, ich könnte eine WHERE-Klausel hinzufügen, auf die Haupt Abfrage in standalone.xml meine zu befriedigen Ziele:

<login-module code="Database" flag="required"> 
     ... 
     <module-option name="principalsQuery" value="select password from parent where email=? and CURDATE() <= login_expiry_date "/> 
     ... 
    </login-module> 

Aber Wildfly gibt ein stacktrace

com.ctc.wstx.exc.WstxParsingException: Unexpected '<' in attribute value 

Die Geschäftsanforderung ich versuche zu sagen bin zu Gebote zu erfüllen, dass ein Login muss der Benutzer 2 Wochen, nachdem sie begonnen abläuft, und kann manuell neu init sein durch den Administrator

Sollte ich weiterhin versuchen, diese Geschäftslogik in die Prinzipalabfrage in standalone.xml zu hacken oder wäre es besser, einen Batchprozess zu verwenden, um die Benutzer ablaufen zu lassen?

+0

Sie sagen "Da scheint es keine Möglichkeit zu geben, benutzerdefinierten Code bei erfolgreicher Authentifizierung auszulösen ...". Eigentlich gibt es, nehmen Sie bitte einen Blick auf HttpServletRequest.login Methode - wenn es ohne Ausnahme ausgeführt wird, es bedeutet, dass Sie authentifizieren sind und nach wie vor im Bereich des eigenen Code. zur Authentifizierung ... Ich wusste nicht, dass ich konnte es zusammen mit einem Container-basierten Mechanismus –

+0

ich habe den Eindruck, dass die HttpServletRequest.login() -Methode ein programmatischer Ansatz ist. Aber es ist kein Problem, ich habe es geschafft, die Business-Anforderungen zu erfüllen, indem Sie die Abfrage in der Antwort unter –

Antwort

1

< ist für eine XML-Eigenschaft String nicht gültig. Sie müssen es zu & lt entkommen;

<module-option name="principalsQuery" value="select password from parent where email=? and CURDATE() &lt;= login_expiry_date "/> 
+0

Oh.So einfach! Vielen Dank –