1

isCallerInRoleからの方法に問題がありSessionContextます。このアプリケーションは Glassfish 2.1 で実行され、JDK6 を使用します。

次のクラスでは、現在のユーザーが特定の役割を持っているかどうかを確認する 2 つのメソッドを公開しています。特に、 と という 2 つの特定の役割を確認しRole1ますRole2CheckRemoteのインターフェースですCheckFacade

@Stateless
@DeclareRoles({"Role1", "Role2"})
public class CheckFacade implements CheckRemote {

    @Resource
    private SessionContext ctx;

    @Override
    public Boolean hasRole1() {
        return ctx.isCallerInRole("Role1");
    }

    @Override
    public Boolean hasRole2() {
        return ctx.isCallerInRole("Role2");
    }
}

ユーザーが役割を持っていても、私が電話をかけるhasRole1()か、hasRole2()常に結果として得られます。false

ここで、1 つのロールのみに焦点を当てた次のバージョンを考えると、すべて正常に動作します。つまり、ユーザーがロールを持っていないfalsetrue、ロールを持っているかをそれぞれ取得します。

@Stateless
@DeclareRoles("Role1")
public class CheckFacade implements CheckRemote {

    @Resource
    private SessionContext ctx;

    @Override
    public Boolean hasRole1() {
        return ctx.isCallerInRole("Role1");
    }

}

多分私は何かが足りない。何か案が?

4

0 に答える 0