我有(我認爲)一個類似的問題:在我的情況下,一旦SSO請求成功,用戶被重定向到/,這不是我想要的。
有一個內置的解決方案需要一點挖掘才能找到。
的AbstractAuthenticationProcessingFilter
有一個方法setAuthenticationSuccessHandler
,使您可以控制這一點,所以如果你有機會到OAuth2ClientAuthenticationProcessingFilter
您可以將其設置爲你想要的。
如果你有類似教程的設置:https://spring.io/guides/tutorials/spring-boot-oauth2/#_social_login_manual那麼你可以簡單地添加以下到在本教程中創建的OAuth2ClientAuthenticationProcessingFilter
:
OAuth2ClientAuthenticationProcessingFilter oauth2Filter = new OAuth2ClientAuthenticationProcessingFilter("/XXXProvider/login");
oauth2Filter.setAuthenticationSuccessHandler(new SimpleUrlAuthenticationSuccessHandler() {
public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException {
this.setDefaultTargetUrl("/my_preferred_location");
super.onAuthenticationSuccess(request, response, authentication);
}
});
你能分享一些代碼,我沒有明確的你是什麼意思。這可以幫助嗎?:[setPreEstablishedRedirectUri](http://docs.spring.io/spring-security/oauth/apidocs/org/springframework/security/oauth2/client/token/grant/redirect/AbstractRedirectResourceDetails.html#setPreEstablishedRedirectUri(java .lang.String)) – xedo
嗨,謝謝你的時間。很難把它放在最小的代碼示例中。我明天再試。默認情況下,Spring Security在登錄後重定向到請求的最後一個資源,但被保護。因此,我可以指定一個loginSuccess url,但對於oauth我無法找到這樣的機制。我明天會看看你的提示。問題是有點老,我不得不提醒自己我已經發現了什麼 –
對不起,但我目前無法提供一個最小代碼示例 –