首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring :当服务器在代理后面重定向url

Spring :当服务器在代理后面重定向url
EN

Stack Overflow用户
提问于 2017-04-08 07:47:10
回答 1查看 867关注 0票数 3

在我的Spring应用程序中,我使用Spring (1.1.4.RELEASE) (Facebook、Google、LinkedIn和Twitter)实现了登录。

在登录过程中,服务器调用以下HTTP:

代码语言:javascript
复制
https://accounts.google.com/o/oauth2/auth?client_id=XXX&response_type=code&redirect_uri=http://xzy.com:91/auth/google&scope=email&state=YYY

问题在这里:redirect_uri=http://xzy.com:91/auth/google

代理后面的应用程序,我需要将redirect_uri更改为

http://xzy.com:91/auth/google -> http://xzy.com/auth/google

我想这是很常见的问题,但我找不到有效的解决办法。

我的pom:

代码语言:javascript
复制
    <dependency>
        <groupId>org.springframework.social</groupId>
        <artifactId>spring-social-security</artifactId>
        <version>${spring-social-version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework.social</groupId>
        <artifactId>spring-social-linkedin</artifactId>
        <version>${spring-social-linkedin.version}</version>
    </dependency>


    <dependency>
        <groupId>org.springframework.social</groupId>
        <artifactId>spring-social-twitter</artifactId>
        <version>${spring-social-twitter.version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework.social</groupId>
        <artifactId>spring-social-google</artifactId>
        <version>${spring-social-google.version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework.social</groupId>
        <artifactId>spring-social-facebook</artifactId>
        <version>${spring-social-facebook.version}</version>
    </dependency>
EN

回答 1

Stack Overflow用户

发布于 2017-04-08 13:35:16

代码语言:javascript
复制
@Bean
public ProviderSignInController providerSignInController(ConnectionFactoryLocator connectionFactoryLocator, UsersConnectionRepository usersConnectionRepository) {
    ProviderSignInController controller = new ProviderSignInController(connectionFactoryLocator, usersConnectionRepository, new SimpleSignInAdapter());
    // get the url from config, this just for example
    controller.setApplicationUrl("http://xzy.com");
    return controller;
}

由于您可以从spring-social中的代码中读取,application url将替换基url。

代码语言:javascript
复制
protected String callbackUrl(NativeWebRequest request) {
        if (callbackUrl != null) {
            return callbackUrl;
        }
        HttpServletRequest nativeRequest = request.getNativeRequest(HttpServletRequest.class);
        if (applicationUrl != null) {
            return applicationUrl + connectPath(nativeRequest);
        } else {
            return nativeRequest.getRequestURL().toString();
        }
    }
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43291526

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档