6.3.2. 使用 Jakarta Enterprise Beans 安全注释

您可以使用 XML 描述符或注释来控制哪些安全角色可以在 Jakarta Enterprise Beans 中调用方法。有关使用 XML 描述 符的详情,请参考使用 Jakarta Enterprise Beans 方法权限

部署描述符中指定的任何方法值都会覆盖注释值。如果在部署描述符中未指定方法值,则使用使用注解设置的值。覆盖粒度以每个方法为基础。

控制 Jakarta Enterprise Beans 的安全权限注释

@DeclareRoles
使用 @DeclareRoles 定义要针对哪个安全角色检查权限。如果没有 @DeclareRoles,则从 @RolesAllowed 注释自动构建列表。
@RolesAllowed, @PermitAll, @DenyAll
使用 @RolesAllowed 列出哪些角色可以访问某一方法或方法。使用 @PermitAll@DenyAll 允许或拒绝所有角色使用方法或方法。
@RunAs
使用 @RunAs 指定方法在从注释方法发出调用时使用的角色。

示例:安全注解示例

@Stateless
@RolesAllowed({"admin"})
@SecurityDomain("other")
public class WelcomeEJB implements Welcome {
    @PermitAll
    public String WelcomeEveryone(String msg) {
        return "Welcome to " + msg;
    }
    @RunAs("tempemployee")
    public String GoodBye(String msg) {
        return "Goodbye, " + msg;
    }
    public String GoodbyeAdmin(String msg) {
        return "See you later, " + msg;
    }
}

在此代码中,所有角色都可以访问方法 WelcomeEveryoneGoodBye 方法在发出调用 时使用 temp employee 角色。只有 admin 角色可以访问方法 GoodbyeAdmin,以及任何其他没有安全注释的方法。