• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

passport 질문입니다

21.01.30 23:00 작성 조회수 349

0

강의와 관련있는 질문을 남겨주세요.
• 강의와 관련이 없는 질문은 지식공유자가 답변하지 않을 수 있습니다. (사적 상담, 컨설팅, 과제 풀이 등)
• 질문을 남기기 전, 비슷한 내용을 질문한 수강생이 있는지 먼저 검색을 해주세요. (중복 질문을 자제해주세요.)
서비스 운영 관련 질문은 인프런 우측 하단 ‘문의하기’를 이용해주세요. (영상 재생 문제, 사이트 버그, 강의 환불 등)

질문 전달에도 요령이 필요합니다.
• 지식공유자가 질문을 좀 더 쉽게 확인할 수 있게 도와주세요.
• 강의실 페이지(/lecture) 에서 '질문하기'를 이용해주시면 질문과 연관된 수업 영상 제목이 함께 등록됩니다.
• 강의 대시보드에서 질문을 남길 경우, 관련 섹션 및 수업 제목을 기재해주세요. 
• 수업 특정 구간에 대한 질문은 꼭 영상 타임코드를 남겨주세요!

구체적인 질문일수록 명확한 답을 받을 수 있어요.
• 질문 제목은 핵심 키워드를 포함해 간결하게 적어주세요.
• 질문 내용은 자세하게 적어주시되, 지식공유자가 답변할 수 있도록 구체적으로 남겨주세요.
• 정확한 질문 내용과 함께 코드를 적어주시거나, 캡쳐 이미지를 첨부하면 더욱 좋습니다.

기본적인 예의를 지켜주세요.
• 정중한 의견 및 문의 제시, 감사 인사 등의 커뮤니케이션은 더 나은 강의를 위한 기틀이 됩니다. 
• 질문이 있을 때에는 강의를 만든 지식공유자에 대한 기본적인 예의를 꼭 지켜주세요. 
반말, 욕설, 과격한 표현 등 지식공유자를 불쾌하게 할 수 있는 내용은 스팸 처리 등 제재를 가할 수 있습니다. 

저렇게 에러가 나는데요.이유를 모르겠습니다.

답변 21

·

답변을 작성해보세요.

0

감사합니다.노드를 책으로 기초를 더 다져야 할 것 같습니다.리액트 나중에 봐야 겠네요 ㅎㅎ

0

TID, TR은 그냥 변수명같은 제네릭 이름입니다. 마음대로 지어도 되는 이름요. 저는 user.id가 number여서 number로 했는데 다른 서비스는 id가 문자열일 수도 있고 다양하죠.

0

감사합니다. 해보니 withCredentials 때문에 그런거였네요. 감사해요 ㅎㅎ 

serializeUser<> deserializeUser<>에 제네릭에 보면 두개를 둘 수 있는데요.매개변수 타입을 지정하는거 같은데요.그래서 ts강의에서 User,number로 정의 하셨는데요.number는 user.id가 number여서 정의 하신건가요?

다른건 그래도 이해는 하겠는데요. 이 부분은 도저히 이해가 안 돼서요

serializeUser<TID>(fn: (user: Express.User, done: (err: any, id?: TID) => void) => void): void;
serializeUser<TID, TR extends IncomingMessage = express.Request>(fn: (req: TR, user: Express.User, done: (err: any, id?: TID) => void) => void): void;
deserializeUser<TID>(fn: (id: TID, done: (err: any, user?: Express.User) => void) => void): void;
deserializeUser<TID, TR extends IncomingMessage = express.Request>(fn: (req: TR, id: TID, done: (err: any, user?: Express.User) => void) => void): void;
이부분인데요 TID는 또무엇이고 TR, IncomingMessage는 무엇인지 모르겠어요. TID나 TR에 대해서 자세히 알려주지는 안 더라구요

0

헤더에 쿠키 정보가 들어가있는지 직접 확인해보셨나요? axios는 this.http.post할때 withCredentials 관련 옵션 없나요?

0

앵귤러 에서는 일단 이렇게 요청하고 있습니다

0

this.http.post<object>(this.url,this.loginForm.value).subscribe(data => {
console.log(data)

0

선생님 정말 귀찮게 해드려서 죄송합니다. 저를 선생님의 제자로 받아 주 실 수 없나요? 

done(null,user)를 통해 세션에 저장했습니다.그리고 이제 req의 header에 정보가 있겠죠? 그럼 이제 다른 페이지로 이동할때 deserializeUser 를 통해서 header에 있는것을 db와 비교합니다. 따라서 프론트에서 request 헤더에 내용이 있을텐데 없네요? done(null,user) 이외에 해주어야 하는 부분이 또 있나요?

0

저게 false가 나오는 이유는 프론트에서 서버로 쿠키가 전달되지 않기 때문입니다. 네트워크탭 쿠키를 확인하세요

0

angular로 node하고 restapi로 만들려고 하는데 passport-local 사용하는건 이거밖에 없는거 같은데요.이렇게 만들면 될까요?앵귤러에서 요청을 해도 계속 req.isAuthenticated() 하면 false가 나와서요.초보적인 질문 죄송합니다 ㅜㅜ

0

https://blog.jscrambler.com/setting-up-authentication-using-angular-node-and-passport/

0

감사합니다!!

0

대규모 서비스가 아닌 이상 로그인 구현 jwt로 안 하는 것을 추천드립니다. 정책상 엄청나게 복잡한 것들이 많습니다. 저도 대부분은 passport와 세션 사용합니다.

굳이 jwt로 하시겠다면 jwt를 할 때는 passport 필요없습니다. passport-jwt가 있긴 한데 딱히 유용하지는 않습니다.

0

네 import passport를 import * as passport로 바꾸니까 되네요. ch3/back 깃허브에서 다운 받았는데 그 부분이 잘 못 되었나봐요.한가지 궁금한점이요. 앵귤러와 ts로 웹 서비스를 하려고 하는데요.보아하니 login구현을 jwt로 하는것 같더라구요.보통은 어떻게 하나요? 대부분 passport를 이용하나요?

0

음...? passport.serializeUser가 함수가 아니라고 나오네요. 바로 위에 console.log(passport) 해보세요.

0

제가 그래서 깃허브에 있는 ch3/back 다운 받아서 npm i 를 해봤는데 안 되네요 ㅜㅜ

0

0

흠, 코드 쪽에는 문제가 없어보이는데요. 저게 에디터 에러인지 확인하려면 터미널에 tsc 쳐보세요. 에디터랑 똑같은 에러가 나는지 확인해보세요.

노드 강좌는 바뀐게 거의 없습니다. 혼자 강의만 보는 정도로는 실력이 많이 늘지 않습니다. 직접 프로젝트를 해보는 것이 좋고요. 특히 실제 사용자들이 있는 서비스를 해보는 것이 좋습니다. 근데 실제 서비스 아이디어를 떠올리기 힘들어서 저는 개인 블로그 직접 만들어보는 것을 추천드립니다.

0

이미지로 첨부 하였습니다.감사합니다.node.js 강좌 다시 한번 볼까 하는데요. 많이 이렇게 바뀌었을까요? 책이나 인강은 확실히 이해하는데 도움은 되지만 새로나온기술이나 깊이 있게 들어가지는 못하는것 같습니다.혼자 학습하는것이 중요한데 혹시 어떻게 공부하셨나요? 고려대 경영학과 다니시는 중에 바꾸신것 같은데요.

0

0

0

models/user.ts 보여주세요