isCallerInRole
からの方法に問題がありSessionContext
ます。このアプリケーションは Glassfish 2.1 で実行され、JDK6 を使用します。
次のクラスでは、現在のユーザーが特定の役割を持っているかどうかを確認する 2 つのメソッドを公開しています。特に、 と という 2 つの特定の役割を確認しRole1
ますRole2
。CheckRemote
のインターフェースです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 つのロールのみに焦点を当てた次のバージョンを考えると、すべて正常に動作します。つまり、ユーザーがロールを持っていないfalse
かtrue
、ロールを持っているかをそれぞれ取得します。
@Stateless
@DeclareRoles("Role1")
public class CheckFacade implements CheckRemote {
@Resource
private SessionContext ctx;
@Override
public Boolean hasRole1() {
return ctx.isCallerInRole("Role1");
}
}
多分私は何かが足りない。何か案が?