当前位置: 首页 > 知识库问答 >
问题:

我如何为一个特定的请求只指定一个筛选器?

滕夜洛
2023-03-14

我正在使用JAX-RX规范来构建使用Java的web服务。我使用过滤器进行身份验证和授权,jax-rs为每个请求调用所有过滤器,我不需要为某个请求只指定一个过滤器,我如何做到这一点?我只想阻止另一个过滤器调用。我不使用web.xml,而是使用rootclass扩展带有@applicationpath注释的application类,如下所示:

@ApplicationPath("api")
public class RootEndPoint extends Application {

}

共有1个答案

商品
2023-03-14

我知道了。
这是我的请求,我会为将来需要它的任何人回答它。
如果您想阻止某些筛选,您可以通过执行以下步骤使用@namebinding注释:

假设我们有两个筛选器:ManagerUserFilterNormalUser,我希望以manager身份登录,但不希望NormalUserFilter被调用,请执行以下步骤:

1-创建注释并使用这些注释:

@NameBinding
@Target({TYPE,METHOD})
@Retention(value = RetentionPolicy.RUNTIME)
public @interface ManagerFilterResources {}

2-在ManagerUserFilter中使用此批注,如下所示:

@Provider
@ManagerFilterResources
public class ManagerUserFilter implements ContainerRequestFilter,ContainerResponseFilter {
// implementation abstract method in Containers
}

3-在ManagerResource类中使用此批注,如下所示

@ManagerFilterResources
@Path("/manager")
public class ManagerResource {

注意:如果只想在一个方法上应用筛选器,也可以在方法上使用此注释。

4-像第一步一样为NormalUserFilter创建另一个注释,并将其命名为NormalUser作为示例,在NormalUserFilter中使用,如下所示:

@NameBinding
@Target({TYPE,METHOD})
@Retention(value = RetentionPolicy.RUNTIME)
public @interface NormalUser {}

并在筛选器中使用它

@Provider
@NormalUser
public class NormalUserFilter implements ContainerRequestFilter, ContainerResponseFilter {

// implementation abstract method in Containers

如果您转到/managerurl NormalUserFilter将不会被调用,我希望这个答案将是有用的。

 类似资料:
  • 我试图使用一个API从比特戳获取货币交易价格在我的网页上。 我已经研究过这个问题,但仍然无法让它工作,因为它总是返回 使用的链接是,响应应该是 这是我的代码:

  • 对不起,如果我的问题不清楚。我很困惑,不知道如何理解每个概念。 欢迎任何评论。谢谢

  • 我在这上面花了太多的时间,我自己也弄不明白。 我正在编写一些使用一些模块的代码,所以我想为我的消息创建一个特定的日志记录器,而不是其他模块的日志记录器(它们太多了,所以我不想为每个模块设置不同的级别)。 我将我的用例简化为: 当我执行前面的代码时,我希望记录我的信息消息。 结果我得到了: 与相同,它总是打印警告/错误/关键消息,而不是debug/info。 如果我提高了日志记录级别(假设),它会按

  • 我的前端代码: 和我的Express.js服务器代码: 如您所见,Express服务器在端口8000上运行,React开发服务器在端口3000上运行。正在请求,并且正在通过使用POST方法请求另一个源。但是,只有第二个请求工作得很好。我不知道怎么会这样。当然,如果我用querystring发出GET请求,事情就正常了。但我也想知道如何用请求正文进行POST获取。

  • 我正在做一个项目,在这个项目中我正在创作一本书。创建图书后,将生成唯一的bookId,响应如下所示: 我有一个GET请求,它基本上使用bookid-http://localhost:port/{bookId}获取书籍的详细信息。 每当我创建一本书时,我都会尝试得到上面的URL以便我的响应看起来像这样: 这样,如果用户单击URL,就会导航到GET请求http://localhost:port/{bo

  • 我有一个活动选项卡的自动播放选项卡类current,这意味着当选项卡是活动的时,列表项有一个名为current的类。 现在我要向第一个子 添加不同的类 null null