1

我希望在 Broadleaf 应用程序上提供 Facebook 和 Gmail 登录信息,我指的是下面提到的链接

https://www.broadleafcommerce.com/blog/why-your-ecommerce-site-should-integrate-with-spring-social

但是链接已经很老了,谁能帮我发送一个链接或指针以使用 Broadleaf 5.2 版进行 Spring Social 登录

提前致谢

4

1 回答 1

0

我实际上并没有实现这一点,但我想我可以提供一些指针。以下步骤取自博客文章。总的来说,这篇博文仍然是正确的,但自从写了这篇博文以来,声明 bean 已经从 XML 转移到了 Java。

1) 将 Spring Social 依赖项添加到您的根 POM

关注博文。

您可能需要更新到 Spring Social 的最新版本(截至 2020 年 1 月的 1.1.6)。请参阅Spring Social Documentation以获取更新的依赖项。具体来说,您需要从博客文章中列出的内容中添加一个额外的依赖项:

<dependency>
    <groupId>org.springframework.social</groupId>
    <artifactId>spring-social-core</artifactId>
    <version>1.1.6.RELEASE</version>
</dependency>

最新的 spring-social-facebook 是 1.1.1,最新的 spring-social-twitter 是 1.1.2。

2)新建applicationContext-social.xml

这是变化最大的一步。Broadleaf 5.2 支持在类上使用 Spring 的 @Configuration 注释声明 bean。这意味着可以在 Java 中为 Broadleaf 5.2 的 @Configuration 类定义博客文章中 XML 中定义的 bean。

applicationContext-social.xml 的 bean 定义可以添加到 SiteConfig.java(或添加到从 SiteConfig 扫描组件的新配置类),applicationContext-servlet.xml 的 bean 定义将进入 SiteServletConfig。

这是博客文章中作为 Java 配置列出的第一个 bean 的示例:

@Value("${facebook.clientId}")
private String facebookClientId;

@Value("${facebook.clientSecret}")
private String facebookClientSecret;

@Value("${twitter.consumerKey}")
private String twitterConsumerKey;

@Value("${twitter.consumerSecret}")
private String twitterConsumerSecret;

@Bean
public ConnectionFactoryRegistry connectionFactoryLocator() {
    FacebookConnectionFactory facebookConnectionFactory = new FacebookConnectionFactory(facebookClientId, facebookClientSecret);
    TwitterConnectionFactory twitterConnectionFactory = new TwitterConnectionFactory(twitterConsumerKey, twitterConsumerSecret);

    ConnectionFactoryRegistry connectionFactoryRegistry = new ConnectionFactoryRegistry();
    connectionFactoryRegistry.setConnectionFactories(Arrays.asList(facebookConnectionFactory, twitterConnectionFactory));
    return connectionFactoryRegistry;
}

applicationContext-security.xml 的条目将进入 SiteSecurityConfig,但需要对其进行更新以符合 Spring Security Java 配置的新标准。博客文章中的配置片段<sec:intercept-url pattern="/signin/**" requires-channel="https" />只要求 /signin 下的 URL 通过 https 提供。自 2012 年撰写博客文章以来,通过 https 为整个站点提供服务已成为标准,因此如果您的站点已经这样做,则可能不需要此步骤。查看我们的参考 Heat Clinic 应用程序,它的 SiteSecurityConfig.java 已经配置为通过 https 提供所有 URL。

如果您确实需要添加一个条目,请在 SiteSecurityConfig.java 中找到该方法configure(HttpSecurity http)并将其添加到配置中:

.requiresChannel()
    .antMatchers("/signin/**")
    .requiresSecure()

如果存在,您还可以将字符串添加/signin/**到现有的requiresChannelantMatcher。

3) 修改您的 Broadleaf 运行时属性

与博文相同

4) 将新的 applicationContext-social.xml 添加到 web.xml

使用组件扫描时,此步骤不是必需的。我怀疑您使用的是带有 Broadleaf 5.2 的 web.xml 文件。

5) 更改您的 RegisterController 以扩展 BroadleafSocialRegisterController

和博文一样。您可以在以下位置查看框架控制器org.broadleafcommerce.core.web.controller.account.BroadleafSocialRegisterController

6)最后,将登录按钮添加到您的登录页面

和博文一样。适应您网站的 HTML。

我希望这有帮助。随时提出任何后续问题。

于 2020-01-07T06:30:54.453 回答