短而甜蜜:
我希望能够过滤传入的请求以对用户进行身份验证,然后获取我的数据库中定义的角色并在Jersey 2.5.1服务类中使用它们。
e.g。
@RolesAllowed("Custom1", "Custom2")
@Post
.....
目前我有以下内容,它似乎与基本的@PermitAll和@DenyAll注释一起使用,我只是不知道如何重载/重载什么来获得一些使用Jersey 2.5.1的自定义代码。我见过Jersey1的例子。我应该只创建一个请求过滤器并在那里进行并设置securityContext吗?任何帮助将不胜感激。
public class TestApi extends ResourceConfig {
public TestApi() {
super(AuthenticateResource.class);
register(RolesAllowedDynamicFeature.class);
}
}
答案 0 :(得分:1)
弄清楚我的问题。注入的资源信息然后拉出注释。如果它不是预匹配
,则有效@Context
private ResourceInfo resourceInfo;
Annotation[] annotations = resourceInfo.getResourceMethod().getDeclaredAnnotations();
答案 1 :(得分:0)
SecurityContext由基础容器设置,或者在应用程序中手动设置(通常在ContainerRequestFilter中)。如果您的容器足够复杂,可以为您设置正确的安全上下文(使用正确的主体),您可以这样做。否则,请创建与Jersey示例ContainerAuthFilter中的自定义ContainerRequestFilter
类似的自定义{{1}}。