ตัวกรอง Jetty แบบกำหนดเองใน Dropwizard

ฉันกำลังพยายามเพิ่มตัวกรองส่วนหัวที่กำหนดเองในอินสแตนซ์ Dropwizard ของฉันเพื่อตรวจสอบดูว่าเวอร์ชันของคำขอซิงค์กับเวอร์ชันของอินสแตนซ์ Dropwizard หรือไม่

ฉันเห็นว่าคุณสามารถใช้ FilterBuilder เพื่อเพิ่มท่าเทียบเรือ CrossOriginFilters อย่างไรก็ตาม ฉันประสบปัญหาในการหาวิธีตั้งค่าตัวกรองแบบกำหนดเอง

ขอบคุณ


person jbenowitz    schedule 03.10.2013    source แหล่งที่มา


คำตอบ (2)


ผ่านชั้นเรียนสิ่งแวดล้อม

https://dropwizard.github.io/dropwizard/manual/core.html#environments

@Override
public void run(MyApplicationConfiguration configuration, Environment environment) {
    environment.servlets().addFilter("Custom-Filter-Name", new MyCustomFilter()).addMappingForUrlPatterns(EnumSet.allOf(DispatcherType.class), true, "/*");
}

คุณสามารถเลือกประเภทการจัดส่งได้โดยการเปลี่ยน EnumSet.allOf(DispatcherType.class)

person dom farr    schedule 08.11.2013
comment
ใน dropizard ใหม่ 0.7+ จะทำดังนี้: environment.servlets().addFilter(/*, new CrossOriginFilter()); - person Maksim; 03.04.2014
comment
@มักซิม. นั่นไม่ถูกต้อง พารามิเตอร์แรกของ addFilter ใน 0.7.x ของ dropwizard คือชื่อตัวกรอง ไม่ใช่การแมป จำเป็นต้องโทรไปที่ addMappingForUrlPatterns(EnumSet<DispatcherType> dispatcherTypes, boolean isMatchAfter,String... urlPatterns) - person dom farr; 08.04.2014

นี่คือวิธีที่ฉันทำให้มันทำงานโดยใช้ Dropwwizard 0.7.1 (ดูเหมือนว่า API จะเปลี่ยนไปจากตัวอย่างอื่น ๆ ที่ฉันพบ)

ในวิธีการรันแอปพลิเคชันของคุณ:

final FilterRegistration.Dynamic cors = environment.servlets().addFilter("crossOriginRequsts", CrossOriginFilter.class);
cors.addMappingForUrlPatterns(EnumSet.allOf(DispatcherType.class), true, "/*");

https://gist.github.com/craigbeck/fb71818063175b9b4210

person craigb    schedule 11.07.2014