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

使用Resteasy的JAX-RS:如何进行“超类”请求头管理?[副本]

宋原
2023-03-14
@RequestScoped
@Path("/path")
public class SomeResource {

    @GET
    public SomeResponse get(
        @HeaderParam("authenticationHeader1") String authenticationHeader1,
        @HeaderParam("authenticationHeader2") String authenticationHeader2,

        @QueryParam("stuff") String stuff, 
        @QueryParam("moreStuff") String moreStuff)      
    {
        final AuthenticationBean authBean = validateCredentials(authenticationHeader1, authenticationHeader2)

        if (!authBean.isValid()) {
            return someStronglyWordedResponse(authBean);
        }
        else { 
            return someProcessing(authBean, stuff, moreStuff);
        }
    }

我可以创建一个抽象的超类,并在那里简单地定义validateCredentials(),因为authenticationbean提取在任何地方都是相同的。

但在Java EE7上下文中,这给我的印象是不太好,更重要的是,如果Jimmy在编写新资源时忘记添加身份验证管理,该怎么办?

有没有推荐的方法来解析所有请求的HTTP头(不管目标资源是什么),并对结果做一些通用处理?

共有1个答案

丌官嘉良
2023-03-14

Jersey为此提供了ContainerRequestFilter。在这里有一个关于如何使用它们的很好的教程:https://jersey.java.net/documentation/latest/filters-and-interceptors.html

您可以创建一个全局筛选器并在其中进行验证,如果失败,可以使用RequestContext.AbortWith()中止它,如示例10.2所示。可以很容易地修改此示例,以使用您的头数据而不是安全上下文。可以使用RequestContext.GetHeaderString()访问标头,标头名称是唯一的参数。

您还可以使用名称绑定(教程中的10.5)来仅过滤某些资源的请求。

 类似资料:
  • 有人知道出了什么问题吗?

  • 什么是resteasy?RESTEasy和JAX-RS有什么区别?和之间有什么区别?

  • 我正在使用JAX-RS(RESTEasy)构建一个服务器,它将为客户端提供REST接口。服务器将充当客户端和另一个服务器之间的代理。另一个服务器是第三方服务器(JasperReports),也有一个REST接口。我想使用JAX-RS让我的代理与该服务器对话。(我的代理服务器添加了身份验证和其他服务。)因此,这里有三方:客户端、代理服务器和报告服务器。 我以这种方式看待工作流程。代理服务器实现 JA

  • 问题内容: 我编写了简单的REST Web服务客户端类,该类使用JAX-RS 2.0客户端API发出REST请求。我试图弄清楚如何为每个调用设置请求超时。这是请求的代码: 问题答案: 为此,您可以先创建一个ClientConfig,然后在创建新客户端时将其作为参数提供。

  • 我正在开发一个java脚本客户端应用程序,在服务器端我需要处理CORS,所有我用JAX-RS和Jersey编写的服务。我的代码: 感谢佛普尼

  • 我试图在JBoss AS 7.1下部署一个简单的web应用程序,该应用程序与Resteasy捆绑在一起。根据文档,只需要(至少)一个空的、一个带有注释的和其他类的的类 下面是我所遵循的文档: https://docs.jboss.org/author/display/as7/jax-rs+reference+guide https://docs.jboss.org/author/display/a