gpt4 book ai didi

java - 如何在 web.xml 中配置安全注释的实体过滤范围?

转载 作者:行者123 更新时间:2023-11-30 03:22:28 25 4
gpt4 key购买 nike

阅读 Jersey 文档:https://jersey.java.net/documentation/latest/entity-filtering.html我能够通过将 SecurityEntityFilteringFeature 与其他激活的功能一起添加到我的 web.xml 来激活它。

所以我的 web.xml 的功能部分看起来像这样:

    ...
<init-param>
<param-name>jersey.config.server.provider.classnames</param-name>
<param-value>
org.glassfish.jersey.server.gae.GaeFeature;
org.glassfish.jersey.server.mvc.jsp.JspMvcFeature;
org.glassfish.jersey.media.multipart.MultiPartFeature;
org.glassfish.jersey.server.filter.RolesAllowedDynamicFeature;
org.glassfish.jersey.message.filtering.SecurityEntityFilteringFeature;
</param-value>
</init-param>
...

注释@PermitAll(不改变任何内容)和@DenyAll(总是从json中删除实体)效果很好。

问题是:要使用注释@RolesAllowed,我还需要按照文档中所述在实体过滤范围中注册角色

EntityFilteringFeature.ENTITY_FILTERING_SCOPE - "jersey.config.entityFiltering.scope"

Defines one or more annotations that should be used as entity-filtering scope when reading/writing an entity.

但我只能通过 web.xml 配置它,而且我无处可做以下操作:

new ResourceConfig()
// Set entity-filtering scope via configuration.
.property(EntityFilteringFeature.ENTITY_FILTERING_SCOPE, new Annotation[] {SecurityAnnotations.rolesAllowed("manager")})
// Register the SecurityEntityFilteringFeature.
.register(SecurityEntityFilteringFeature.class)
// Further configuration of ResourceConfig.
.register( ... );

有什么猜测吗?

最佳答案

您可以同时使用 ResourceConfig web.xml。它不是“非此即彼”。例如

<servlet>
<servlet-name>MyApplication</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>org.foo.JerseyConfig</param-value>
</init-param>
</servlet>

package org.foo;

public class JerseyConfig extends ResourceConfig {
public JerseyConfig() {
register(...);
property(...);
}
}

web.xml 和 ResourceConfig 注册/配置/属性等都会被使用。您可以看到一些其他部署选项,here .

如果您确实必须远离ResourceConfig(不确定为什么会出现这样的问题),您始终可以创建一个Feature

@Provider
public class MyFilteringFeature implements Feature {

@Override
public boolean configure(FeatureContext context) {
context.property(...);
context.register(...);
return true;
}
}

然后只需注册该功能(除非您正在扫描包,否则应使用 @Provider 注释来获取该功能)。

关于java - 如何在 web.xml 中配置安全注释的实体过滤范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31017050/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com