Jersey:将值从 ContainerRequestFilter 传递到端点

Posted

技术标签:

【中文标题】Jersey:将值从 ContainerRequestFilter 传递到端点【英文标题】:Jersey: Pass value from ContainerRequestFilter to endpoint 【发布时间】:2014-08-12 13:18:25 【问题描述】:

我正在使用 Jersey 2.9,并且我创建了一个过滤器,它将获取一个加密的标头值,并对其进行解密,然后将其传递给被调用的端点。我不知道如何做到这一点,我一直在互联网上搜索,但没有真正找到我想做的具体例子。过滤器被调用,我只是在将值从它传递到端点时遇到问题。

你们能帮帮我吗!

这里是一些示例代码:

public class MyFilter implements ContainerRequestFilter


    @Override
    public void filter(ContainerRequestContext requestContext) throws WebApplicationException 

        String EncryptedString = requestContext.getHeaderString("Authentication");

        /* Doing some methods to remove encryption */

        /* Get a string which I want to pass to the endpoint which was called on, in this example: localhost:4883/rest/test */
    


@Path("rest")
public class restTest


    @Path("test")
    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public String Testing()

        /* Process the value from the MyFilter */
    

【问题讨论】:

How can you pass data from a Filter to the endpoint in Jersey的可能重复 我也看过那个线程,但是作为一个Java新手我不知道如何实现它,如果有人可以提供我上面示例中的一段代码,我将非常感激。 由于这个问题比链接的问题更具体关于 Header-Manipulation 我添加了一个答案。 【参考方案1】:

您可以轻松修改标题或添加另一个:

@Override
public void filter(ContainerRequestContext requestContext) throws IOException 
    requestContext.getHeaders().add("X-Authentication-decrypted", decryptedValue);

这个值可以注入到你的资源方法中:

@GET
@Produces(MediaType.APPLICATION_JSON)
public String Testing(@HeaderParam("X-Authentication-decrypted") String auth) 


【讨论】:

啊,这完全符合我的要求。这似乎是一个非常简单的解决方案,我不知道它可以这样修复。谢谢!

以上是关于Jersey:将值从 ContainerRequestFilter 传递到端点的主要内容,如果未能解决你的问题,请参考以下文章

将值从 ngOnInit 传递到模板

将值从presentingViewController 传回presentingViewController

将值从 php 传递到 modal

通过 Laravel 中的 AJAX 发布请求将值从一个视图传递到另一个视图

将值从 uitableview 传递到 uicollectionview

如何将值从javascript变量传递给剃刀变量?