小编Jan*_*owy的帖子

通过过滤器向请求添加自定义标头

我有一个扩展Filter类的类,它看起来像:

@Component
@Order(Ordered.HIGHEST_PRECEDENCE)
public class CorsFilter implements Filter {

    @Override
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
        System.out.println("--------------------------------------");

        HttpServletRequest request = (HttpServletRequest) req;

        req.setAttribute("test", "test");


        final HttpServletResponse response = (HttpServletResponse) res;
        response.setHeader("Access-Control-Allow-Origin", "*");
        response.setHeader("Access-Control-Allow-Methods", "POST, PUT, GET, OPTIONS, DELETE");
        response.setHeader("Access-Control-Allow-Headers", "Authorization, Content-Type");
        response.setHeader("Access-Control-Max-Age", "3600");
        if ("OPTIONS".equalsIgnoreCase(((HttpServletRequest) req).getMethod())) {
            response.setStatus(HttpServletResponse.SC_OK);
        } else {
            chain.doFilter(req, res);
        }
    }
Run Code Online (Sandbox Code Playgroud)

现在的问题是,我可以自定义添加headerrequest?我通过它可里面所有的方法去requestreq,找不到任何办法。但是在debug模式下,我发现里面CoyoteRequest是的列表headers。如何在其中添加自定义header

在此处输入图片说明

spring servlets header request filter

6
推荐指数
2
解决办法
8704
查看次数

使用 Mockito 测试 @Postconstruct

为什么当我通过Mockito我的@Postconstruckt方法注入模拟时没有调用?

@Service
public class MyService {
    public MyService() {
        System.out.println("CONSTRUKTOR");
    }

    @PostConstruct
    public void init() {
        System.out.println("POST CONSTRUCT");
    }

@RunWith(MockitoJUnitRunner.class)
public class Mockito1 {

    @InjectMocks
    private MyService service;

    @Before
    public void init() {
    }
Run Code Online (Sandbox Code Playgroud)

输出: 仅: CONSTRUKTOR

java spring mocking mockito postconstruct

6
推荐指数
1
解决办法
2万
查看次数

从 Http Interceptor 获取授权标头

我已经授权将令牌headers直接放入。我现在如何从 Angular 4 获取这个令牌Http Interceptor

在此处输入图片说明

不幸的是,以下都不console logs包含此标题:

  intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    //const changedReq = req.clone({headers: req.headers.set('Authorization', 'Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbkB3cC5wbCIsImV4cCI6MTUxMDY2NDM0M30.0iBktdr4-1EzTi1iaQOOfguK7HGVJF7JYkB-AF3uZgJrmKnVESAyKkHoNRzum1Pq5xZ6GJaZC9cbZQ2umMSfLA')});
    console.log('req', req);
    return next.handle(req).do((event: HttpEvent<any>) => {
      console.log('event', event);
      if (event instanceof HttpResponse) {
        // do stuff with response if you want
      }
    }, (err: any) => {
      if (err instanceof HttpErrorResponse) {
          this.ehs.setService(err.status, err.error);
          // redirect to login
      }
    });
  }
Run Code Online (Sandbox Code Playgroud)

authorization header interceptor angular-http-interceptors angular

2
推荐指数
1
解决办法
1941
查看次数

嵌套的 webflux 路由总是与顶部的路由一起使用

任何人都可以在这个路由示例中告诉我,每次我输入 ex: /api/person/1 等时,它都会转到 /api/person 吗?无论我选择哪种方法,它总是与 /api/person 搭配。

@Bean
    public RouterFunction<ServerResponse> monoRouterFunction(PersonService personService) {

      return  RouterFunctions
                .nest(path("/api/person"),
                        route(method(GET), personService::findAllPeople)
                            .andRoute(GET("/{id}"), personService::findOnePerson)
                            .andRoute(POST("/add"), personService::addPerson)
                            .andRoute(PUT("/update"), personService::updatePerson)
                            .andRoute(DELETE("/delete/{id}"), personService::deletePerson));

}
Run Code Online (Sandbox Code Playgroud)

java spring reactive-programming spring-webflux

2
推荐指数
2
解决办法
2954
查看次数