java 使用Jmix Rest仅公开特定的jmixentities

0md85ypi  于 2023-04-19  发布在  Java
关注(0)|答案(1)|浏览(114)

在我们的项目中,我们使用Jmix-Rest API,并为Rest调用公开使用JMixEntity注解的实体。然而,这默认公开了所有JmixEntity。JmixEntity-Annotation用于两者,CRUD rest API和模板等。虽然后者可以用于模板等,但前者不应该在每个CRUD中暴露所有实体。然而,我们正在寻找一种方法,只公开一些这样的实体,而不是让它们通过Rest默认访问。
有没有一个属性,设置或注解可以让你在JMix中做到这一点?我知道JMix是构建在Spring之上的。有没有一种方法可以使用Spring配置或注解?
感谢您的评分

iecba09b

iecba09b1#

您可以使用resource role限制REST API可用的实体数量。
角色必须具有“API”范围:

@ResourceRole(name = "New role", code = "new-role", scope = "API")

对于此角色,您可以限制用户可以访问的实体数量,例如:

@EntityAttributePolicy(entityClass = MyEntity.class,
        attributes = "*",
        action = EntityAttributePolicyAction.MODIFY)
    @EntityPolicy(entityClass = MyEntity.class,
        actions = EntityPolicyAction.ALL)
    void myEntity();

如果您将此角色分配给用户,则用户将无法使用REST API仅读取指定的实体。

相关问题