与Broadleaf的春季社交登录

时间:2020-01-04 15:59:11

标签: spring-boot broadleaf-commerce spring-social-facebook spring-social-google

我希望在Broadleaf应用程序上提供Facebook和Gmail登录名,我为此引用了下面提到的链接

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

无论链接是否较旧,任何人都可以帮助我发送链接或指针以使用Broadleaf 5.2版进行Spring Social登录

预先感谢

1 个答案:

答案 0 :(得分: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中。 / p>

以下是博客文章中第一个以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/**添加到现有的requiresChannel antMatcher(如果存在)。

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。

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