【问题标题】:How can I create HATEOAS link for a Filter?如何为过滤器创建 HATEOAS 链接?
【发布时间】:2017-01-17 03:20:01
【问题描述】:

我有一个 Spring Security Servlet 过滤器,我想创建一个完整的 HATEOAS 链接到它。这是我尝试的结果(登录)。如您所见,缺少协议和主机。在生产中,我需要正确处理协议和主机(我设置了server.use-forward-headers=true,所以如果我使用正确的来源,一切都应该没问题)

"_links" : {
"self" : {
  "href" : "http://localhost/v0/public"
},
"registration" : {
  "href" : "http://localhost/v0/public/registration"
},
"login" : {
  "href" : "/v0/public/authentication/password"
}

我已经尝试过这个并编写了自己的构建器,但它们都导致了上述情况

new Link( "/v0/public/authentication/password", "login" )

如何使用与其他链接相同的所有信息创建此链接。

【问题讨论】:

    标签: java spring spring-boot servlet-filters spring-hateoas


    【解决方案1】:

    TLDR

    这是我想出的,但还有一些其他问题

    BasicLinkBuilder.linkToCurrentMapping()
       .slash( RouteConstants.PRIVATE )
       .withRel( "private" );
    

    这是我最初的解决方案,但我遇到了问题

        @Override
        protected List<Link> undiscoverableLinks( final ServletServerHttpRequest request ) {
            UriComponentsBuilder uriBuilder = fromHttpRequest( request ).replacePath( RouteConstants.AUTH_PASS );
            return Collections.singletonList( new Builder( uriBuilder ).withRel( "login" ) );
        }
    

    和建设者

    static class Builder extends LinkBuilderSupport<Builder> {
    
        Builder( final UriComponentsBuilder builder ) {
            super( builder );
        }
    
        @Override
        protected Builder getThis() {
            return this;
        }
    
        @Override
        protected Builder createNewInstance( final UriComponentsBuilder builder ) {
            return new Builder( builder );
        }
    }
    

    这里是I get the ServletServerHttpRequest

    我遇到的问题是关于 https 和我的代理,我能够 https 和我的代理被识别的唯一方法是修复 proto 标头,并将 cloudfront 添加到内部代理

    server.tomcat.internal-proxies=\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}
    server.tomcat.protocol-header=cloudfront-forwarded-proto
    

    【讨论】:

      猜你喜欢
      • 2014-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-18
      • 1970-01-01
      • 2017-02-10
      相关资源
      最近更新 更多