@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头(不管目标资源是什么),并对结果做一些通用处理?
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,然后在创建新客户端时将其作为参数提供。
我试图在JBoss AS 7.1下部署一个简单的web应用程序,该应用程序与Resteasy捆绑在一起。根据文档,只需要(至少)一个空的、一个带有注释的和其他类的的类 下面是我所遵循的文档: https://docs.jboss.org/author/display/as7/jax-rs+reference+guide https://docs.jboss.org/author/display/a
我正在开发一个java脚本客户端应用程序,在服务器端我需要处理CORS,所有我用JAX-RS和Jersey编写的服务。我的代码: 感谢佛普尼