参考官方文档教程,搭建了一个本地的小demo支持github形式的第三方登录,现在想将Oauth形式的登录和以前的用户名密码形式的登录整合起来,也就是Oauth登录之后回调某个方法拿到第三方token再根据api得到用户的信息,然后为用户在数据库中存储相关的信息。
在网上找了比较久的资料,无赖关于oauth2 client的学习资料太少,好像可以通过注入PrincipalExtractor
这个bean来在Oauth2登录之后进行回调。但是在本地测试了,GitHub Oauth2登录成功之后并没有在控制台输出test。
请问各位能提供一些思路么?
@Bean
public PrincipalExtractor principalExtractor() {
System.out.println("test");
return new PrincipalExtractor() {
@Override
public Object extractPrincipal(Map<String, Object> map) {
String token = oauth2ClientContext.getAccessToken().getValue();
// store the user info into database ...
}
};
}
ssoFilter是你按官网例子写的吧?
里面有个
UserInfoTokenServices tokenServices = new UserInfoTokenServices(client.getResource().getUserInfoUri(),client.getClient().getClientId());
下面的话你估计没写
需要把你的PrincipalExtractor这个set进去