Java 球衣导入包
Java jersey importing packages
我正在尝试重新制作在此处找到的解决方案
到目前为止我已经包含了这些导入
import javax.ws.rs.WebApplicationException;
import javax.ws.rs.container.ContainerRequestFilter;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.Response.Status;
经过一番搜索,我收录了这个
import org.glassfish.jersey.server.ContainerRequest;
我的问题是我现在收到这些错误
... AuthFilter is not abstract and does not override abstract method filter(ContainerRequestContext) in ContainerRequestFilter
... method does not override or implement a method from a supertype
... cannot find symbol
[ERROR] symbol: method getHeaderValue(String)
[ERROR] location: variable containerRequest of type ContainerRequest
如果您不想切换标签页,代码在这里
@Override
public ContainerRequest filter(ContainerRequest containerRequest)
throws WebApplicationException {
// Automatically allow certain requests.
String method = containerRequest.getMethod();
String path = containerRequest.getPath(true);
if (method.equals("GET") && path.equals("application.wadl"))
return containerRequest;
// Get the authentication passed in HTTP headers parameters
String auth = containerRequest.getHeaderValue("authorization");
if (auth == null)
throw unauthorized;
不幸的是,我没有向 OP 询问所需的声誉,因此不胜感激。
编辑:显然 com.sun.jersey.spi.container.ContainerRequest
不包含 getHeadervalue 并且 jersey 2.0 无法找到包含 getHeadervalue 的那个有什么办法解决它吗?
import javax.ws.rs.WebApplicationException;
import javax.ws.rs.container.ContainerRequestFilter;
import javax.ws.rs.container.ContainerRequestContext;
import org.glassfish.jersey.internal.util.Base64;
import java.io.IOException;
public class AuthFilter implements ContainerRequestFilter {
@Override
public void filter(ContainerRequestContext requestContext)
throws IOException {
String method = requestContext.getMethod();
String path = requestContext.getUriInfo().getPath();
String auth = requestContext.getHeaderString("authorization");
if (auth == null)
throw new AuthenticationException("Too bad");
//how to import that ^
auth = auth.replaceFirst("[Bb]asic ", "");
String entry = new String(Base64.decode(auth));
if (!entry.equals("admin:password"))
throw new AuthenticationException("Too bad");
}
}
link 中的 class 正在实施特定于 Jersey 1 的 ContainerRequestFilter
。从 JAX-RS 2(泽西岛 2.x)开始,class 名称成为标准 class(只是名称)。该方法的新签名是
import java.io.IOException;
import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.container.ContainerRequestFilter;
public class Hello implements ContainerRequestFilter {
@Override
public void filter(ContainerRequestContext requestContext) throws IOException {
requestContext.getMethod();
requestContext.getUriInfo().getPath();
requestContext.getHeaderString("authorization");
}
}
我添加了对一些类似方法的更改调用,这些方法在 class
中使用
您还可以找到 link 到完整的基本身份验证示例 in this answer。它来自 Jersey 项目示例,它使用 Jersey 2
我正在尝试重新制作在此处找到的解决方案
到目前为止我已经包含了这些导入
import javax.ws.rs.WebApplicationException;
import javax.ws.rs.container.ContainerRequestFilter;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.Response.Status;
经过一番搜索,我收录了这个
import org.glassfish.jersey.server.ContainerRequest;
我的问题是我现在收到这些错误
... AuthFilter is not abstract and does not override abstract method filter(ContainerRequestContext) in ContainerRequestFilter
... method does not override or implement a method from a supertype
... cannot find symbol
[ERROR] symbol: method getHeaderValue(String)
[ERROR] location: variable containerRequest of type ContainerRequest
如果您不想切换标签页,代码在这里
@Override
public ContainerRequest filter(ContainerRequest containerRequest)
throws WebApplicationException {
// Automatically allow certain requests.
String method = containerRequest.getMethod();
String path = containerRequest.getPath(true);
if (method.equals("GET") && path.equals("application.wadl"))
return containerRequest;
// Get the authentication passed in HTTP headers parameters
String auth = containerRequest.getHeaderValue("authorization");
if (auth == null)
throw unauthorized;
不幸的是,我没有向 OP 询问所需的声誉,因此不胜感激。
编辑:显然 com.sun.jersey.spi.container.ContainerRequest 不包含 getHeadervalue 并且 jersey 2.0 无法找到包含 getHeadervalue 的那个有什么办法解决它吗?
import javax.ws.rs.WebApplicationException;
import javax.ws.rs.container.ContainerRequestFilter;
import javax.ws.rs.container.ContainerRequestContext;
import org.glassfish.jersey.internal.util.Base64;
import java.io.IOException;
public class AuthFilter implements ContainerRequestFilter {
@Override
public void filter(ContainerRequestContext requestContext)
throws IOException {
String method = requestContext.getMethod();
String path = requestContext.getUriInfo().getPath();
String auth = requestContext.getHeaderString("authorization");
if (auth == null)
throw new AuthenticationException("Too bad");
//how to import that ^
auth = auth.replaceFirst("[Bb]asic ", "");
String entry = new String(Base64.decode(auth));
if (!entry.equals("admin:password"))
throw new AuthenticationException("Too bad");
}
}
link 中的 class 正在实施特定于 Jersey 1 的 ContainerRequestFilter
。从 JAX-RS 2(泽西岛 2.x)开始,class 名称成为标准 class(只是名称)。该方法的新签名是
import java.io.IOException;
import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.container.ContainerRequestFilter;
public class Hello implements ContainerRequestFilter {
@Override
public void filter(ContainerRequestContext requestContext) throws IOException {
requestContext.getMethod();
requestContext.getUriInfo().getPath();
requestContext.getHeaderString("authorization");
}
}
我添加了对一些类似方法的更改调用,这些方法在 class
中使用您还可以找到 link 到完整的基本身份验证示例 in this answer。它来自 Jersey 项目示例,它使用 Jersey 2