3
我对Jersey和JAX-RS相对较新,但是我无法在有关在构造函数内部使用SecurityContext的文档中找到我的方式资源。通过在Web资源的构造函数中注入SecurityContext来检查Principal-user
我们的OAUTH实现目前是这样的,REST API上的所有请求都被ResourceFilter的实现拦截。因此,资源过滤器通过调用设置用户校长:
containerRequest.setSecurityContext(new MySecurityContext(user));
...的ContainerRequest.filter()方法中,wWith具体类MySecurityContext,如:
public class MySecurityContext implements SecurityContext {
private final User principal;
public MySecurityContext(final User user) {
this.principal = user;
}
@Override
public String getAuthenticationScheme() {
return SecurityContext.FORM_AUTH;
}
@Override
public Principal getUserPrincipal() {
return principal;
}
@Override
public boolean isSecure() {
return false;
}
@Override
public boolean isUserInRole(String role) {
return principal.getRoles().contains(role);
}
}
现在我想用在任何@ GET/@ POST/@ DELETE方法之前调用webresource构造函数中的用户主体。我试过注入
@Context SecurityContext
..进入构造函数的参数列表,但调用getUserPrincipal()只是返回null。
有没有办法在Webresource的构造函数中检查Principal用户?
谢谢!