2017-12-06 11 views
0

React Router에서 <a href=""></a>을 사용하여 OAuthentication 응용 프로그램에서 Passport.js를 사용해야합니다. React Router에서 앵커 태그를 생성하고 React Router를 클릭 할 때마다 React Router의 빈 페이지로 이동하고 Google/Facebook/Linkedin의 모든 검증을 통해 노드 서버에서 콜백을받지 못합니다.<a> React-Router의 href 태그 사용 방법

내 백엔드가 등록 할 수 있도록 href 태그를 React-Router에 넣는 유용한 방법은 무엇인가요? 콜백을 통해 API 흐름을 거쳐 React-Router의 올바른 위치로 보내시겠습니까?

이 문제는 그러나 나는 react- 가지고, 그들은 내가 할과 솔루션은 단순한 HREF 태그이었다 같은 문제가이 게시물에서이

The Problem of using axios.get() for OAuthentication with Passport.js

편집

입니다 내 응용 프로그램에서 라우터 및 가능하지 않았습니까? 또한 예가 없습니다.

Previous post about Authentication with Passport.js with React front

내가 jQuery를에서이 프로젝트를 이동하고

편집 반작용-라우터와 돌아 오는 지금 내 서버 측 노드 코드의 대부분은 업데이트가 필요하지 않은, 반응 초점을 맞추고 있지만, 여기 내 노선 THER 부분입니다 Passport로 OAuth를 처리합니다. 난 그냥이 도달하는 내 앞을 필요로, 그것의 일을하고 난 당신이 CORS에 문제가 언급 코멘트에 주목 나

router.get('/linkedin', passport.authenticate('linkedin'), 
    function(req, res){ 
     console.log('nexted') 
    } 
); 

    router.get('/linkedin/callback', 
     passport.authenticate('linkedin', { failureRedirect: '/index' }), 
    function(req, res) { 
     console.log('here') 
     res.redirect('/professionals'); 
    }); 
+0

반응 라우터의 빈 페이지가 있습니까? href 태그를 클릭 한 후 무엇을 기대하고 있습니까? – azium

+0

GET 요청을 통해 서버로 이동하여 해당 플로우에서 처리하고 던져서 passport.js를 통해 적절한 콜백 및 OAuthentication을 얻을 수 있기를 바랍니다. 일반적인 문제를 보여주기 위해 내 게시물을 편집했지만 차이점은 반응 라우터가 없기 때문에 내가 할 수있는 일입니다 – KellysOnTop23

+1

반응 라우터가 사용자를 방해하지 않습니다. oauth 링크를 처리하는 서버의 경로 (express?)가 들리지 않거나 올바르게 설정하지 않은 것 같습니다. href 링크 및 반응 응용 프로그램에 대한 빠른 설치를 게시 할 수 있습니까? – azium

답변

1

로 다시 보낼 수 내가 옳다 경우, 당신은을 사용하는 생각 인증 코드 부여 OAuth 흐름, 내가 다른 서버에서 내 SPA와 백엔드를했을 때 나는 GitHub와 동일한 문제가있었습니다. 이 경우 백엔드 서버를 통해 SPA의 정적 파일을 제공하십시오. 이렇게하면 React Router가 작동 할 수 있도록 아래 코드를 마지막 경로로 지정해야합니다. 당신이 당신이 암시 부여의 OAuth 흐름을 사용하지 않으려면, 그리고 SPA의 인증을 : 당신은 내가

app.get('*', (req, res) => { 
    res.sendFile(path.join(__dirname + '/client/index.html')); 
}); 

주 같은 here을 한 곳에 REPO를 찾을 수 있습니다.

+0

당신의 제안을 시도했지만 여전히 운이 없다. 내 http에서 '302'서버를 가져 오지만 정상적인 여권 흐름을 따르지 않았습니다. 여기서 가장 좋은 방법은 React-Router를 포기하고 일반 href 태그를 사용하는 것입니다 ..... – KellysOnTop23

+0

상태 302가 리디렉션에 사용되는데 언제 알 수 있습니까? 나는 이해하지 못했다. 'console.log ('여기')'가 인쇄되어 있습니까? –

+0

'콘솔.로그 '는 인쇄되지 않습니다. axios.get을 사용하여 페이지에 액세스하려고 할 때마다 302 상태가됩니다. 내 응용 프로그램에서 ReactRouter를 제거하거나 소셜 미디어 로그인이 내 응용 프로그램에 중요하기 때문에 여권 부분 이후에 포함 시키십시오. – KellysOnTop23