2017-08-24 3 views
0

JDBC Realmフォーム認証でTomcatを使用すると、ログイン時に指定されたユーザー名ではなくユーザー名として別のユーザーテーブル列が返されますか?返されたユーザー名にTomcat JDBCRealmが別の列を使用する

ユースケース: 私のアプリケーションでは、私はservletRequest.getUserPrincipal()を使用してorg.apache.catalina.realm.GenericPrincipalにキャストします。今度は、IDを、現在のユーザーのloginnameの代わりに、データベーステーブルの "created_by"列に記入するなどの作業に使用したいとします。 この列には、私がTomcat docsまたはJDBCRealm-docsで、このための属性を見ていない

(...データボリューム、ログイン名を変更する可能性、)様々な理由のために、数の列ではなく文字列です。

私はuserIdCol新しい属性を必要とし、同様にGenericPrincipalでそれが利用できる必要があるだろう。 新しい属性が使用されている場合、IDがHttpServletRequestで直接利用可能であった場合でも、さらに優れています。

私はこれが可能ではないと確信していますが、とにかく質問したいと思っていました。要求自体(id-stringではなく、id-number)がとても共通しているようです。

アドバイスをいただければ幸いです。ありがとうございました。

答えて

0

Tomcatの既存のコードでこれを行う方法はありません。

私はそれをどのように扱いますか:ユーザがログインすると、UserオブジェクトをロードしてHttpSessionに入れます。 Userオブジェクトには、ユーザーの数値識別子が含まれています。いくつかのデータベース操作を実行する必要があるときはいつでも、私は現在UserHttpSessionからその操作を実行するメソッドに渡します。現在、データベース呼び出しを処理するコードは、ユーザーの数値識別子にアクセスできます。

+0

あなたの答えをありがとう。私は同じことをやっていますが、私の意見ではほとんどすべてのアプリケーションがこのようなことをする必要があるため、このユースケースのより良い解決策があるのだろうかと思っていました。 – Blama

関連する問題