Spring Security Oauth2认证通过后如何回调将用户信息存储在数据库?

新手上路,请多包涵

参考官方文档教程,搭建了一个本地的小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 ...
        }
    };
}
阅读 11.5k
1 个回答

ssoFilter是你按官网例子写的吧?
里面有个

UserInfoTokenServices tokenServices = new UserInfoTokenServices(client.getResource().getUserInfoUri(),client.getClient().getClientId());
下面的话你估计没写

    
tokenServices.setPrincipalExtractor(principalExtractor);

需要把你的PrincipalExtractor这个set进去

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题