Spring 春联:“春联”;无法获取ConnectionRepository:没有用户登录";
我正在尝试使用Facebook登录,如中所述 当我试图创建JdbcUsersConnectionRepository时,我需要类路径中的spring安全性。 当我添加spring安全性时,我收到Spring 春联:“春联”;无法获取ConnectionRepository:没有用户登录";,spring,facebook,spring-security,spring-social,spring-social-facebook,Spring,Facebook,Spring Security,Spring Social,Spring Social Facebook,我正在尝试使用Facebook登录,如中所述 当我试图创建JdbcUsersConnectionRepository时,我需要类路径中的spring安全性。 当我添加spring安全性时,我收到 "java.lang.IllegalStateException: Unable to get a ConnectionRepository: no user signed in" 当尝试接收连接时 Connection<Facebook> connection = connection
"java.lang.IllegalStateException: Unable to get a ConnectionRepository: no user signed in"
当尝试接收连接时
Connection<Facebook> connection = connectionRepository.findPrimaryConnection(Facebook.class);
所有这些只有在spring security位于类路径时才会发生社交连接应该对应于任何身份验证用户。似乎用户应该通过用户名/密码或服务提供商登录。试看 这是因为默认情况下使用 在内部,SpringSocial的配置支持将使用UsersConnectionRepository创建请求范围的ConnectionRepository bean。这样做时,它必须识别当前用户。因此,我们还必须重写getUserIdSource()以返回UserIdSource的实例 在本例中,我们将返回AuthenticationNameUserIdSource的一个实例。UserIdSource接口的这个实现假设应用程序使用Spring安全性进行保护。它使用SecurityContextHolder查找SecurityContext,并从中返回身份验证对象的name属性 如果您的应用程序没有使用Spring安全性进行保护,那么您需要将UserIdSource接口实现为适合您的应用程序安全机制的接口。UserIdSource界面如下所示: getUserId()方法只返回唯一标识当前用户的字符串
更多信息如果您使用的是Spring boot,则属性security basic不应设置为false。在
应用程序.properties中隐藏此行。这将禁用安全性,如果禁用了spring安全性,则boot将抛出错误
#security.basic.enabled=false
你能给我举一个Facebook的UserIdSource实现的例子吗?为了返回用户id,我需要知道用户是否已连接。我不能这样做,因为我不能调用connectionRepository.findPrimaryConnection(Facebook.class)@PavelBernshtam你好!为什么您的用户不登录,而您尝试为他获取社交连接(SecurityContextHolder.getContext().getAuthentication()为空)?社交关系应该与任何用户对应。似乎用户应该通过用户名/密码或服务提供商登录。你试过吗?
"java.lang.IllegalStateException: Unable to get a ConnectionRepository: no user signed in"
package org.springframework.social;
public interface UserIdSource {
String getUserId();
}
#security.basic.enabled=false