Tomcatでカスタム領域を作成しようとしています。私の問題は、セッションに追加されたオブジェクトがシリアライズ可能かどうかを確認するフレームワークの一部としてSessionAttributeListenerがあり、セッションが無効になっているなどの問題が発生した場合です。Tomcat:java.security.Principalの実装
org.apache.catalina.realm.GenericPrincipalは直列化できないため、PrincipalとSerializableを実装する独自のクラスを作成しようとしました。その後、私はそのため偽、ユーザーが持っている必要があり、他の役割を取得
request.isUserInRole("user")
使用しようとした場合を除き、これは問題であると思われます。私がValveクラスのCustomPrincipalのGenericPrincipalを交換するとtrueを返します。だから私の質問は:
- 偽のリターンの原因は何ですか?
- GenericPrincipalの代わりに自分のクラスを使用するにはどうすればよいですか?
- これを行うことはできますか?
編集:は ちょうど明確にするために、私は実際にすでにこれを実装し、それはまた、Serializableを実装除き、CustomPrincipalのコードは、GenericPrincipalと全く同じです。
request.setUserPrincipal(new CustomPrincipal(args...));
ではなく、私は
request.setUserPrincipal(new GenericPrincipal(args...));
request.getUserPrincipal(への任意の呼び出しを行うときに)戻りますCustomPrincipal Iを:私のバルブで、私が持っているとき request.isUserInRole( "ユーザー")はfalseを返しますそのクラスを使用しています。