2017-05-01 2 views
1

목표는 웹 응용 프로그램에 대한 사용자 프로필 시스템을 구축하는 것입니다. 사용자는 로그인하고 세션을 유지하며 자신의 프로필을 볼 수 있습니다. 이 작업을 수행하는 방법에 대한 온라인 자습서를 여러 번 읽은 후에 조금 잃어 버렸습니다. 누구나 다른 라이브러리를 사용하며 웹 개발에 새로운 사람이라면 각 라이브러리가하는 일이 명확하지 않습니다. 다음 라이브러리가 사용 된 것을 보았습니다. 누군가가 사용자 프로필 상호 작용의 흐름을 설명하고 각 라이브러리가 들어오는 곳을 설명 할 수 있습니까? 나는 당신의 질문에서 플러그인의 대부분을 사용하는 방법을 배웠가 https://www.youtube.com/watch?v=Z1ktxiqyiLA :에서 학습을 시작하는Nodejs 사용자 프로필 및 세션

passport 
passport-local 
bcrypt-nodejs 
connect-flash 
express-session 

jsonwebtoken 
express-jwt 

morgan 
cookie-parser 

답변

1

한 가지 방법이 될 수 있습니다. 입니다 -

  • passport 여권이 authorizationauthentication

  • passport-local을 담당하는 미들웨어로 작동 express에 일반적으로 사용되는 Node.js를 플러그인 : 플러그인에 대한 있도록

    확인 passport 용 플러그인,보다 기술적으로는 데이터베이스 또는 구성 파일과 함께 사용되는 인증 전략.

  • bcrypt-nodejs은 일반적으로 데이터베이스의 암호를 암호화하는 데 사용되지만 암호는 일반 텍스트로 저장하는 것이 좋습니다.

  • connect-flash - "사용자가 성공적으로 추가되었습니다", "유효하지 않은 사용자 자격 증명"또는 페이지에 표시하려는 다른 성공 또는 오류 메시지 페이지에 나타나는 플래시 메시지에 사용됩니다.

  • express-session - 사용자 세션을 저장하는 책임이있는 express 미들웨어입니다.

  • jsonwebtoken - 사용자가 인증되었는지 여부를 식별하는 데 사용할 토큰을 만드는 데 jwt가 사용됩니다.

  • express-jwt - jsonwebtoken

  • cookie-parser에 대한 express 미들웨어 - 단지 로그 보내고 서비스 제공 - express 미들웨어 쿠키

  • morgan

    을 구문 분석합니다.

좋아 여기에 이론을 조금 이해하고 있어야하므로 :

  • passportpassport-local 전략은 사용자가 세션에서 authenicated 또는되지 않은 경우 경우, 저장되어있는 경우 상태 인증 메커니즘입니다 타사 서비스에서 세션을 데이터베이스/파일 등으로 유지하지 않은 경우 node.js 서버를 다시 시작하면 세션이 손실됩니다.

  • jsonwebtoken은 상태 비 저장 인증 메커니즘이므로 서버에 "비밀 키"만 저장할 필요는 없습니다.Stateless 아키텍처에는 수평 적 확장 성을 촉진하는 멋진 몇 가지 장점이 있습니다. 사용자는 송신 된 토큰을 구문 분석하고 사용자가 로그인했는지 여부를 이해하는 끝이없는 노드를 가질 수 있습니다. 최근에는 jwt를 인증으로 사용합니다.

+0

환상적인 답변, 많은 도움이됩니다. 몇 가지를 명확히 할 수 있습니까? 연결된 동영상에서 모건 모듈을 사용하지 않습니다. 모건은 필요하지 않습니까? 또한 비디오는 jsonwebtoken을 사용하지 않고 express-session을 사용합니다. jsonwebtoken과 express-session 중 하나를 선택해야합니까? 패스포트는 statefull 인증이고 jsonwebtoken은 상태 비 저장 인증 메커니즘이라고했지만 두 모듈을 모두 사용하는 자습서를 보았습니다. – user3768533

+0

요 그들을 사용할 수 있지만 일반적으로 그들은 혼자가 서, 나는 api에 대 한 json 웹 토큰을 사용 하 고 monolit 애플 리케이션에 대 한 여권. Morgan은 디버그 도구 인 로그를 저장하고 표시하는 데 사용됩니다. –

+0

비디오 자습서는 핸들 바를 사용합니다. 내가 이해하는 한, AngularJS 또는 ReactJS를 사용하려면 핸들 바를 사용하지 않을 것입니다. 여권과 익스프레스 세션이 포함 된 비디오 솔루션을 사용해야합니까? – user3768533