鍍金池/ 問(wèn)答/Java  網(wǎng)絡(luò)安全/ Spring Security Oauth2認(rèn)證通過(guò)后如何回調(diào)將用戶信息存儲(chǔ)在數(shù)

Spring Security Oauth2認(rèn)證通過(guò)后如何回調(diào)將用戶信息存儲(chǔ)在數(shù)據(jù)庫(kù)?

參考官方文檔教程,搭建了一個(gè)本地的小demo支持github形式的第三方登錄,現(xiàn)在想將Oauth形式的登錄和以前的用戶名密碼形式的登錄整合起來(lái),也就是Oauth登錄之后回調(diào)某個(gè)方法拿到第三方token再根據(jù)api得到用戶的信息,然后為用戶在數(shù)據(jù)庫(kù)中存儲(chǔ)相關(guān)的信息。

在網(wǎng)上找了比較久的資料,無(wú)賴關(guān)于oauth2 client的學(xué)習(xí)資料太少,好像可以通過(guò)注入PrincipalExtractor這個(gè)bean來(lái)在Oauth2登錄之后進(jìn)行回調(diào)。但是在本地測(cè)試了,GitHub Oauth2登錄成功之后并沒(méi)有在控制臺(tái)輸出test。

請(qǐng)問(wèn)各位能提供一些思路么?

@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 ...
        }
    };
}
回答
編輯回答
護(hù)她命

ssoFilter是你按官網(wǎng)例子寫的吧?
里面有個(gè)

UserInfoTokenServices tokenServices = new UserInfoTokenServices(client.getResource().getUserInfoUri(),client.getClient().getClientId());
下面的話你估計(jì)沒(méi)寫

    
tokenServices.setPrincipalExtractor(principalExtractor);

需要把你的PrincipalExtractor這個(gè)set進(jìn)去

2017年12月30日 19:15