3

私のEJB3では、プリンシパルの役割をテストしようとしますが、常に。を返しますfalse

WebLogic 11gコンソールで、「MyDomain」->「SecurityRealms」->「myrealm」->「UsersandGroups」で3つのユーザー(user1、user2、user3)と2つのグループ(role1、role2)を定義しました。role1にはuser1とuser3があり、role2にはuser2とuser3があります。
私のEJBには、それ以上のセキュリティが定義されていません(@RolesAllowedDDのエントリなどがありません)。

EJBでロールの存在をテストすると、sessionContext.isCallerInRole(role);常に返されますfalse。電話をかけるsessionContext.getCallerPrincipal().getName();と、正しいユーザーIDを取得します。

私は何が間違っているのですか?

4

2 に答える 2

0

あなたが注入された場合、アノテーションsessionContextで認証タイプをコンテナとして指定するとうまくいきました。@Resource例えば:

@Resource(authenticationType=AuthenticationType.CONTAINER)
private SessionContext sessionCtx;
于 2014-11-07T21:00:30.313 に答える
0

@DeclareRoles または を使用してロールを宣言しましたか? 仕様を正しく読んだ場合、セクション 17.2.5.3 では、いずれかのメカニズムを介して isCallerInRole() を呼び出すときに使用するロール名を宣言する必要があるようです。

于 2011-03-14T20:49:39.650 に答える