我正在使用Dropwizard 0.9.2,我想创建一个资源,该资源不需要GET身份验证,而需要POST基本身份验证。
我努力了
@Path("/protectedPing")
@Produces(MediaType.TEXT_PLAIN)
public class ProtectedPing {
@GET
public String everybody() {
return "pingpong";
}
@PermitAll
@POST
public String authenticated(){
return "secret pingpong";
}
与
CachingAuthenticator<BasicCredentials, User> ca = new CachingAuthenticator<>(environment.metrics(), ldapAuthenticator, cbSpec);
AdminAuthorizer authorizer = new AdminAuthorizer();
BasicCredentialAuthFilter<User> bcaf = new BasicCredentialAuthFilter.Builder<User>().setAuthenticator(ca).setRealm("test-oauth").setAuthorizer(authorizer).buildAuthFilter();
environment.jersey().register(bcaf);
environment.jersey().register(RolesAllowedDynamicFeature.class);
environment.jersey().register(new AuthValueFactoryProvider.Binder<>(User.class));
environment.jersey().register(new ProtectedPing());
这似乎导致对“ / protectedPing”的所有请求都需要基本身份验证。
在Dropwizard
0.9.2中,文档说如果我有一个受保护的资源,则创建一个自定义过滤器。我以为我需要这样做,但是我不知道从哪里开始,或者我是否真的需要做些什么。
这更多的是球衣问题,而不是dropwizard问题。您可以在这里查看:https : //jersey.java.net/documentation/latest/filters-and-
interceptors.html
本质上您想要的是:
创建一个指示您要测试身份验证的注释(例如@AuthenticatePost)
创建资源并使用@AuthenticatePost注释正确的方法
创建您的身份验证过滤器(可能类似于您在上面所做的操作)。
在动态功能中,测试注释是否存在于传入的资源中。对于发布,这将成立,对于获取,将成立。然后直接在资源方法上而不是在资源上全局注册AuthenticationFilter。
这将是我如何解决此问题的半完整示例:
public class MyDynamicFeature implements DynamicFeature {
@Override
public void configure(ResourceInfo resourceInfo, FeatureContext context) {
if(resourceInfo.getResourceMethod().getAnnotation(AuthenticateMe.class) != null ) {
context.register(MyAuthFilter.class);
}
}
public class MyAuthFilter implements ContainerRequestFilter {
@Override
public void filter(ContainerRequestContext requestContext) throws IOException {
// do authentication here
}
}
public @interface AuthenticateMe {
}
@Path("myPath")
public class MyResource {
@GET
public String get() {
return "get-method";
}
@POST
@AuthenticateMe
public String post() {
return "post-method";
}
}
}
请注意,在向功能上下文注册身份验证之前,DynamicFeature会检查是否存在身份验证注释。
希望对您有所帮助,
如果您有任何疑问,请告诉我。
我创建了一个自定义筛选器,用于获取令牌,然后用与令牌相关的角色填充身份验证对象 然后,我将该过滤器添加到springsecuritycontext中,如下所示: 应用程序已经存在,我只是尝试添加Spring Security层。Spring Security版本为4.2.3。在尝试实现此功能的几天后,不会加载,因此不会筛选任何请求。请帮帮忙。
> 总结一下问题:我试图了解如何以特定的方式自定义html5日期选择器,具体来说,格式类似于8月31日星期二的[日历图标],右侧带有插入符号,可以打开日期选择器。经过初步搜索,我找到了这些用于自定义日期输入文本框的伪元素。 预期的结果是,这些定制选项在大多数情况下都可以满足定制日期选择器的要求,但到目前为止,我还无法应用这些选项来完全满足目标。例如,我试图去掉文本框中的第二个正斜杠(31之后的代码
下面是过滤器的外观。 对于WebSecurityConfigurerAdapter#configure(webSecurityWeb)web.忽略()中包含的路径,我希望该筛选器不会像Spring Security筛选器链的其余部分一样激发。 下面是它的样子 我希望在调用Spring Security链的其余部分时调用这个过滤器,并对web.igneration()中的路径忽略这个过滤器,就像Sp
org.apache.hadoop.hbase.client.rpCretryingCaller@459C8C0a,java.io.ioException:java.io.ioException:java.lang.reflect.invocationTargetException at org.apache.hadoop.hbase.protobuf.to Filter(Protobufutil
存储在Django模型中的元素如下 示例数据如下: . 结果:找到对象- 结果:找到对象- 结果:找到对象- 结果:未找到对象 如何使用过滤器和正则表达式进行这些查询?
在一个AnyLogic项目中,在“抓住”块中,我需要从资源集中自定义地选择资源。在“抢占”的属性选项卡中阻止字段“resource Sets”,选中值和标志“Customize resource Choice”。在“资源选择条件”代码部分,我需要做出如下选择: 我如何检查一个资源单元是否来自给定的资源池,然后根据资源的特性区分它们?谢谢你。最诚挚的问候。