2017-08-01 144 views
1

我想做一個表單提交到我的後端用戶認證Facebook的後端請求,我重定向到Facebook和我登錄到Facebook。我已成功驗證,並且返回了用戶對象(在後端配置)。我的後端Facebook驗證是在spring social tutorial之後完成的,我也遵循了Geoffroy的春季社交登錄教程:geowarin.GitHub dot io/social-login-with-spring.html。我的前端React.Js代碼(運行在localhost:3000)是這樣的:重定向從本地:8080到本地主機:3000請求後

const auth_url = "/connect/facebook"; 
<form className="signin__form" action={auth_url} method="post"> 
    <input type="hidden" name="scope" value="user_friends" /> 
    <button type="submit" className="signin__form-btn"> 
    SIGN IN WITH FACEBOOK 
    </button> 
</form> 

我的package.json代理的連接/ Facebook的響應爲localhost:8080,看起來像:

{ 
... 
"proxy": { 
    "/connect": { 
     "target": "http://localhost:8080", 
     "secure": false, 
     "changeOrigin": true 
    } 
    }, 
... 
} 

我期望看到:

在localhost:3000

{React view components} 

我看到: 上本地主機:8080

{ 
    user: info 
} 

我的問題是我怎麼能回去爲localhost:3000後端重定向後的成品,我應該在後端的另一種方法,所以我可以做一個Ajax獲得前端的請求獲取用戶信息而不是發回JSON對象。在spring.social握手完成後,我不確定如何將其重定向回3000。

回答

1

其實你可以改變你的控制器

頭在客戶端

@RequestMapping(value = "/auth_url", method = RequestMethod.POST) 
public void login(HttpServletResponse response) { 
    response.setHeader("Location", "http://localhost:3000"); 
} 

重定向或從控制器返回重定向URL

@RequestMapping(value = "/auth_url", method = RequestMethod.POST) 
public ModelAndView login() { 
     return new ModelAndView("redirect:http://localhost:3000"); 
} 

另外我建議你通過AJAX提交表單並在不離開本地主機的情況下處理onSuccess:3000

+0

Hello,th要求答覆!我嘗試使用fetch和axios庫做一個AJAX post請求,但他們都不喜歡我發送到Facebook進行後端auth控制器身份驗證時獲得的302重定向響應。有沒有辦法等待重定向完成,然後接收響應? –

相關問題