2016-06-30 10 views
0

Wildflyデータベース認証モジュールで動作するアプリケーションにログイン有効期限機能を実装しようとしています。Wildflyデータベース認証:プリンシパルクエリに日付計算を追加する

成功した認証、またはこの情報を得るためのあらゆる種類のHttpSessionListenerタイプのアプローチでカスタムコードを起動する方法がないようであるため、WHERE句をstandalone.xmlのプリンシパルクエリに追加して、目標:

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

しかしWildflyが

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

私は、ユーザーのログイン必須の2週間で開始された後に期限が切れるおもむくを満たすためにしようとしているビジネス要件と言ってスタックトレースを出力し、手動で再初期化することができ管理者によって管理されます。

このビジネスロジックをstandalone.xmlのプリンシパルクエリにハックしようとするか、バッチプロセスのようなものを使用してユーザーを期限切れにする方がよいでしょうか?

+0

あなたは「成功した認証でカスタムコードを起動する方法はないと思われるので...」と言います。実際には、HttpServletRequest.loginメソッドを見てください。例外なく実行された場合は、認証され、依然として独自のコードの領域にあることを意味します。 –

+0

私は、HttpServletRequest.login()メソッドが認証へのプログラム的なアプローチであるという印象を受けました...私はコンテナベースのメカニズムと一緒に使用することはできませんでした。しかしそれは問題ではない、私は –

答えて

1

<は、xmlプロパティー文字列には無効です。あなたは& ltにそれをエスケープする必要があります。

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

ああ、単純な答えの下に示されているクエリを使用してビジネス要件を満たすことができた!どうもありがとう –