早上好 我在weblogic 10上使用ejb2(旧版应用程序)。
我的会话bean中有一些方法可以保护某些角色执行 我的每个ejb接口方法都用
注释 `@ejb.permission role-name="role1, role2"`
由于某些方法可能由几个不同角色的用户执行,我如何判断哪个角色运行该方法?
我知道怎么知道"来电者是否担任某个角色"
Principal principal = ctx.getCallerPrincipal() ;
boolean isRole = ctx.isCallerInRole("role2") ;
但是,有没有办法获得实际来电者的角色?像" getCallerRole()"还是这样?
在xml文件中" ejb-security-roles.xml"我指定了应用程序域中的角色
<security-role>
<role-name>role1</role-name>
<role-name>role2</role-name>
</security-role>
然后,每个角色都映射到&#34; weblogic-security-role-assignment.xml&#34;
中的LDAP<security-role-assignment>
<role-name>role1</role-name>
<principal-name>Role1User</principal-name>
</security-role-assignment>
<security-role-assignment>
<role-name>role2</role-name>
<principal-name>Role2User</principal-name>
</security-role-assignment>`
任何人都可以帮助,指导我走正确的思路吗?
答案 0 :(得分:1)
只需使用if (ctx.isCallerInRole("role2")) {
根据Oracle Accessing an Enterprise Bean Caller’s Security Context, 这是检查用户角色的唯一方法。