我试图找出Spring Social的工作原理,我决定通过编写示例应用程序来学习它。
该应用程序的核心是基于appfuse quicksart archetype(多模块,Spring MVC),它已经预先配置了基本的Spring Security。
我使用this tutorial来描述Spring社交与Spring Security的整合。但是,该示例使用基于java的Spring Social配置 - 据我所知,官方文档也主要是基于java的。这是我的social.xml
<!-- Ensures that configuration properties are read from a property file -->
<context:property-placeholder location="classpath:*social.properties"/>
<!--
Configures FB support.
-->
<facebook:config app-id="${facebook.app.id}" app-secret="${facebook.app.secret}" />
<social:jdbc-connection-repository data-source-ref="dataSource" connection-signup-ref="accountConnectionSignup"/>
<bean id="userIdSource" class="org.springframework.social.security.AuthenticationNameUserIdSource" />
<!--
This bean is custom account connection signup bean for your registeration logic.
-->
<bean id="accountConnectionSignup" class="com.yoso.socialApp.service.impl.ConnectionSignupManagerImpl"></bean>
<!--
This bean manages the connection flow between the account provider and
the example application.
-->
<bean id="connectController" class="org.springframework.social.connect.web.ConnectController" autowire="constructor">
<constructor-arg index="0" ref="connectionFactoryLocator"/>
<constructor-arg index="1" ref="connectionRepository"/>
</bean>
<bean id="textEncryptor" class="org.springframework.security.crypto.encrypt.Encryptors"
factory-method="noOpText" />
</beans>
xml配置应与上述教程中的SocialContext
类似,并基于此SO question。
security.xml文件未更改,我只添加了这一行
<intercept-url pattern="/auth" access="ROLE_ANONYMOUS,ROLE_ADMIN,ROLE_USER" />
到html
代码。
我还在登录页面添加了一个简单的fb按钮,该按钮重定向到/auth/facebook
并添加了对social.xml
的引用到web.xml
。现在,问题在于每当我点击fb按钮时,都没有任何反应 - 页面只是刷新自己。没有错误,没有消息,甚至在服务器控制台中都没有。
另外,我不确定是否应该为/auth*
创建一些控制器,因为根据documentation,SocialAuthenticationFilter
应该为我做。
答案 0 :(得分:0)
显然,它实际上一直有效。我在非匿名窗口的浏览器中测试它,我同时登录到FB。因此,应用程序只是将我重定向到登录页面(这在配置中有点错误,因为它应该将我重定向到注册页面。)
经验教训。