-
[2019.06.04] 오늘의 TIL - passport deserializeUser 호출이 안되는 문제(postman은 정상작동하고 브라우저에서는 안되는 문제)개발 블로깅/오늘의 TIL 2019. 6. 4. 09:56
어제 밤새 꽁꽁 싸매던 문제가 하나 있었다.
passport.serializeUser(async function(user, done) { done(null, user); }); passport.deserializeUser(function(user, done) { done(null, user); }); passport.use( "local", new LocalStrategy( { usernameField: "Email", passwordField: "password", session: true }, async (username, password, done) => { /* 유효한 계정인지 조회 */ done(null, user); } ) );
passport localstrategy에서 serializeUser 함수까지는 호출이 잘 되어 done으로 인자를 잘 넣어줬다.
serializeUser 함수 안의 user까지는 콘솔로그가 잘 찍힌다. 그런데 deserializeUser함수 안의 user는 콘솔로그가 찍히지 않는 것이다...
deserializeUser함수가 호출되지 않아 done(null, user)이 되질 않으니.. 성공 후 리다이렉트 된 라우터 부분에서 request.user 값이 undefined인 것이다..
무엇보다 더 이상한 건, postman에서는 아주 잘 되는 것이다.
해결하려고 시도해본 내용
- cors 문제 - app.use(cors()) 하였음.
- session store의 cookie secure를 false로 변경
- 클라이언트 쪽에 axios.defaults.withCrendentails = true -> cors 에러가 남
- 클라이언트 쪽에 axios를 get, post 요청 둘 다 해봄.
- 클라이언트 쪽에 axios 요청을 아래 코드와 같이 해봄.
axios .post("http://localhost:3001/login_process", { Email: this.state.Email, password: this.state.password, withCredentials: true, headers: { "Content-Type": "application/json" }, credentials: "same-origin" })
그리고 결정적으로 내가 문제를 해결한 내용이다.
# client에서 설정한 내용
axios.defaults.withCredentials = true; // 기존에 해당 설정으로 cors 에러가 나게 한 부분 axios({ method: "get", url: "http://localhost:3001/login_process", params: this.state, headers: { "Content-Type": "application/json" } })
# server에 설정한 내용
app.use(cors()) 설정을 아래와 같이 변경 (결정타*)
app.use( cors({ origin: "http://localhost:3000", // server의 url이 아닌, 요청하는 client의 url credentials: true }) );
cors의 origin url 경로를 조심해야 한다. 서버 url을 쓰는게 아니고, 요청하는 client의 url을 쓴다..
향후에 AWS 올리면 저거 어떻게 바꿔줘야 할지 잘 모르겠다...
문제를 해결할 수 있게 도와준 링크
http://www.jiajianhudong.com/question/1035067.html
문제는 우선 해결하였는데.... 아직도 postman에서는 정상 작동하고 브라우저에서는 안된 건지 알 수는 없다...
https://helloinyong.tistory.com/148
[2019.06.25] postman에서만 정상 작동하던 원인을 알아냄
반응형'개발 블로깅 > 오늘의 TIL' 카테고리의 다른 글
[2019.06.04] 오늘의 TIL - passport로 Facebook 로그인 시 cors 에러가 나던 문제 (0) 2019.06.04 [2019.06.04] 오늘의 TIL- 암호화 bcrypt.compare가 무조건 false로 나던 문제 (0) 2019.06.04 [2019.06.01] 오늘의 TIL - passport 세팅 후 LocalStrategy 호출이 안되는 현상 (0) 2019.06.01 [2019.05.30] 오늘의 TIL - gitignore에 추가를 해도 반영이 안되는 이유 (0) 2019.05.30 [2019.05.26] 오늘의 TIL - react key (0) 2019.05.26