내가 달성하고자하는 것은 여권을 사용하여 아약스를 통해 사용자 인증을 수행하는 것입니다. 여권을 사용하는 권장 방법은 태그를 사용하여 실행되는 GET
요청을 통해 인증 프로세스를 시작하는 것입니다. 성공 또는 실패한 인증 후에는 새 페이지로 재 지정됩니다. 이제 html 링크를 사용하여 경로를 트리거하는 대신 아약스를 통해 수행하려고합니다.아약스를 통한 여권 인증
// route for facebook authentication and login
app.get('/auth/facebook', passport.authenticate('facebook', { scope : ['email'] }));
// handle the callback after facebook has authenticated the user
app.get('/auth/facebook/callback', (req, res, next) => {
passport.authenticate('facebook', (err, user, info) => {
req.login(user, function(err) {
if(err) return next(err);
return res.status(200).json({
success: "All good man!"
});
})
})(req, res, next);
});
동안 브라우저에서 다음과 같습니다
XMLHttpRequest cannot load [the facebook auth URL]' has been blocked by CORS policy:
No 'Access-Control-Allow-Origin' header is present on the requested resource.
Origin 'http://localhost:8080' is therefore not allowed access.
은 관련 서버 측 코드 : 여기서 문제는이 같은
passport-facebook
같은 타사 인증 전략을 시도 할 때 나는 CORS 오류가 있다는 것입니다 단순히 수행
axios.get('/auth/facebook').then((response) => {
console.log(response);
});
나는
several 유사한
questions을 발견하지만, 그들 중 누구도 만족스러운 대답을 것 같았다. 실제로이 작업을 수행 할 수있는 방법이 있습니까? 아니면 현명한 해결 방법? html 링크를 사용하여 경로가 트리거 된 경우에도 여전히 JSON 응답을 다시 보내는 방법일까요?
흠 ... 나에게 소리 :) 언급 도구를 사용하지 않은됩니다 후속 API 요청에 사용할 토큰을 돌려줍니다. 또한, 나를 혼란스럽게하는 것은 실제 인증 절차가 서버를 통해서만 발생한다는 것입니다. 브라우저에서 일어나는 유일한 일은 (GET/auth/facebook)을 촉발시키는 절차의 시작입니다. 내 이해에 나머지 인증 (같은 로그인/인증 양식) 정확히 동일해야합니다. 그러나 나는 거기에서 뭔가를 놓치고있는 것처럼 느껴집니다. 어쨌든 나는 AJAX가없는 해결 방법을 발견했다고 생각합니다. :) 그러나 감사합니다! – Flavio
안녕하세요 @ 플라 비오, 해결 방법을 알려주시겠습니까? 나는 비슷한 상황에 처해있다. – mdeang2
나는''태그를 사용하여 작동하도록되어있다. 그런 다음 인증 성공 후 "/"로 다시 리디렉션됩니다. 그런 다음 브라우저에서 나는 Ajax를 통해 사용자가 로그인했는지 여부 및 경로가 그에 따라 적절하게 확인합니다 ... 조금 해킹되지만 느린 일을합니다. – Flavio