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用戶?
謝謝!