Server Side JavaScript

Auth - MySQL

소개

 
CREATE TABLE users ( 
    id INT NOT NULL AUTO_INCREMENT , 
    authId VARCHAR(50) NOT NULL ,
    username VARCHAR(30), 
    password VARCHAR(255), 
    salt VARCHAR(255),
    displayName VARCHAR(50),
    email VARCHAR(50) NOT NULL , 
    PRIMARY KEY (id), 
    UNIQUE (authId)
) ENGINE = InnoDB;

Session store

Source code 

Register (회원가입) 

Source code 

Login

 Source code

Federation Authentication (타사인증)

Source code 

댓글

댓글 본문
  1. Been94
    2020-03-16 기준으로 nodejs 서버 v13.9.0 버전에서 로그인이 안되는 문제가 있어서 해결법올립니다.

    mysql연동하여 select를 했을때 buffer관련 에러나오시는 분들 위에 코드를 조금 수정해야합니다.

    createConnection 부분에 몇줄 추가하시고 데이터베이스에 session , users테이블 전부 초기화한번 하고

    서버 재시작하시면 로그인과 회원가입 모두 잘됩니다.

    // Modify the typeCast option to suit your situation.
    createConnection({
    host: config.host,
    port: config.port,
    user: config.user,
    password: config.password,
    database: config.database,
    multipleStatements: true,
    typeCast: function (field, next) {
    if (field.type == 'VAR_STRING') {
    return field.string();
    }
    return next();
    }
    })

    해결법 출처 : https://stackoverflow.com......fer
  2. 굼벵이
    완료
  3. 알고리즘 초고수
    우와 웹 입문자인데 유용합니다 감사해요! :)
  4. antil
    역시나 DB로 하니까 훨씬 더 수월한 느낌이 들어요
    너무너무 재미있어요 node.js!!
  5. 루팡
    This authorization code has been used.
    이거 왜그럴까요...ㅠㅠ
    로그인이 되다 안되다 하네요

    --> 나중에 다시하니 되네요.. 무슨 이유인지 모르겠네요 ㅠ
  6. 박인호
    1-24
    수강완료.
    감사합니다.
  7. 키키
    이메일 부분 null 허용해도 될거 같습니다.
  8. Jade
    감사합니다~ 한참을 고민했었습니다.
    대화보기
    • IwllbeSenior
      타사인증하다 페이스북 계정 보안 인증해야 한다고 해서 아이디가 잠겨버렸어요.. ㅠㅠ 타사인증하실 때 주의하세요! URL안적으면 잠겨요
    • 어려워용
      FacebookTokenError: This authorization code has been used.

      자꾸 이 에러가 뜨네요 ㅜㅜ
    • Help Me
      언제부터인가 .. 처음에는 안 그랬는데
      FaceBook Login 하여 성고하고 리다이렉트 되면서 URL에 이상것이 딸려 오네요
      http://localhost......_=_ 여기서 (#_=_)요놈.

      없앨 수 있는 방법이 없나요??
    • 도와주세요
      facebook login 됬었는데,,언젠부턴가 에러가 뜨네요..

      FacebookTokenError: This authorization code has been used.

      페이스북 앱을 지우고 다시 생성해도 안되네요 혹식 해결책 아시는분 있응면 도와주세요
    • 초보개발자
      혹시 위 스크립트 이용해서 테이블 생성하신 분은
      아래 쿼리문을 실행해 주세요. email field때문에 에러 납니다.

      'ALTER TABLE users DROP COLUMN email;'
    • Wonsup Jung
      고맙습니다. 수고 많으셨습니다.
    • Taro
      만약 facebook login에서 값은 잘 들어왔는데 출력이 ???로 뜬다면
      o2 DB를 DROP하시고 다시 생성 할 때
      create database o2 DEFAULT CHARACTER SET utf8 collate utf8_general_ci; 로 생성해주세요.
      그리고 만약에 안되신다면
      user table을 만들때 ENGINE=InnoDB DEFAULT CHARSET=utf8;을 끝에 붙여주세요.

      저처럼 IDE환경에서 공부하실때 도움이 되시길 바랍니다. ㅎㅎ
    • 삼고잉
      혹시 아이디를 잘못입력했을때 오류나시는 경우가 있다면
      egoing 님 github 코드중 86번에
      if(err){ 를 if(!results[0]){ 로 바꾸고 실행해 보세요
      아이디를 잘못입력했을때 계속 오류가 나서 저렇게 바꿨더니
      'There is no user.' 라는 문구가 잘 뜨네요
    • 삼고잉
      고맙습니다.
    • MySQL 버전에 따라서 1364번 에러가 뜨는데 레퍼런스를 읽어봐도 어떻게 해야될지를 모르겠네요..ㅜ
      authId에 default값이 없다는 에러인데 구글링한대로 mysql 설정을 바꿔봐도 안 되네요..
      혹시 이런 상황에서 어떻게 해야하는지 알 수 있을까요?
    • Jinho Hyeon
      테이블 설계에서 NOT NULL로 설정해야 할 부분이 email이 아니라 displayName이 아닐까요?
      첫번째 영상 아래 코드에 email이 not null로 되어 있어 여쭤봅니다.
    • cracker
      항상 좋은 강의 감사합니다.
      이고잉님 덕에 좋은 강의 편하게 잘 듣게됩니다.
      질문이 있는데요. 페이스북 로그인 하면 displayName이 db에 제대로 저장되지 않고 NULL도 아니고 ???으로 저장되서 브라우저에 출력되더라구요. 한글이라 인코딩 문제인지 어떤 문제인지 아무리 찾아봐도 알수가 없어서 여기 글 남깁니다.
    • 다랑쉬
      덕분에 너무 쉽게 배워갑니다
    • yooin14
      강의 정말 감사합니다. 저두 좀 도네이션 했으면 하는 바램입니다.
    • 항상 감사합니다
      처음에 대학교에와서 처음 코딩할때 너무 어려워서 여기저기 검색해보다가 우연히 들어온 페이지가
      오픈 튜토리얼이었습니다.

      학교 수업때 항상 막히는 거 있을때마다 여기서 유용한 강좌를 듣고
      방학중에도 이고잉님 강의로 공부할만큼 애용하다가
      작년부터 이것저것 프로젝트한다고 맨날 구글링만 하다가 오늘 우연히 node.js 사이트에 들어왔는데
      너무 좋았어요!!!!!!

      마침 제가 필요한 부분들이ㅠ_ㅠ
      밤 늦은지 모르고 지금 이시간까지 계속 보고 같이 코딩했네요ㅎㅎ

      하시다 보면 속상한 일도 많으시고 많이 바쁘실텐데
      저같이 몇년동안 올려주신 강의로 항상 잘 보고 있다고 감사하다고 전해드려야 될거 같아서 글 남깁니다.

      코딩과 it라는게 시간이 지날수록 버전도 업데이트되고 신기술도 나와서
      초반에야 책으로 보지 책 나올쯤엔 또 버전이 업데이트 되서 다시 영어로 구글링 해야되고ㅜㅜ


      이러한 일상에서 이고잉님 처럼 소스코드도 알려줘, 들어가기전 인트로에, 문법 하나하나 설명까지 해주시고..♡ 가뭄에 단비같은 존재랄까요



      항상 감사합니다!!!!!
    • 좋은 강의 감사합니다.
      많이 배우고 갑니다.
      댓글들을 찬찬히 봤는데 호의가 계속되니 권리인줄 아는 몇몇 분들 때문에 정말 힘드실 것 같습니다.
      그렇지만 나는 이고잉님 짱짱맨으로 생각합니다.
    • 일반인
      소켓 아이오 해주세요!!!!!
    • egoing
      아직은 없지만 기회가 되면 다루겠습니다 :)
      대화보기
      • egoing
        실무에서는 실무자의 당연한 의무라고 생각하시면 될 것 같습니다.
        꼭하셔요해요~
        ^^
        대화보기
        • 박성진
          정말 고급 강좌네요.
        • 김장군
          안녕하세요 이고잉님!!
          이고잉님덕분에 코딩을 재밌게 공부를 해왔고 또 열심히 공부한 결과 개발자로 일을 하게된 신입 개발자 입니다~

          아직 그렇게 중요한 직책을 얻지는 못했지만 한가지 궁금한 것이 있어서 여쭈어보려고 합니다

          사용자 암호화시에 개인정보 보호법에 의해서 db에 비밀번호를 저장할때 해독 불가능한 형태로 입력을 해야 한다고 들었습니다. 그래서 이고잉님도 해쉬와 솔트를 통해 단방향 복호화를 진행 하신것 같은데

          실무에서도 이정도로만 회원가입시 단방향 암호화를 진행해도 되는 걸까요??

          crypto를 주변에서 추천하는데 이것 또한 이고잉님이 알려주신 hash와 salt를 한줄로 쉰게 쓸 수 있게 해논거지 내용은 일맥상통 하더라구요!

          혹시 실무에서도 이런 단방향 복호화를 적용 시켜도 되는지 궁금합니다!
        • 고잉 고잉 고잉 같이 떠날래~ 더 기다릴 시간이 없어어어어엉~ ♬
        • 충이영감
          안녕하세요~
          Socket.io 모듈에 대한 강좌는 예정에 없을까요??

          해당글자를 동일하게 입력한 후 엔터를 입력하면,상대방과 나 중 누가 더 빨리 입력했는지를
          Socket.io 모듈로 해결해보려고 하는데 잘 안되네요 ㅜㅜ
        • egoing
          안녕하세요. 세션에 대한 수업은 일단 일단락 지어야 할 것 같고요. 보통 라이브러리들이 오래되거나 사용하지 않는 세션을 지우는 작업을 알아서 처리하는 경우가 많습니다. 그 부분을 찾아보시면 좋을 것 같습니다. 세션을 모두 삭제하면 모든 사용자가 식별할 수 없게 되기 때문에 모두가 로그아웃됩니다. 그래서 세션을 모두 삭제하는 경우는 많지 않습니다. 좀 더 심화된 강의도 검토해볼께요. 비영리화 축하의 말씀도 감사드려요! ^^
          대화보기
          • alex_dev
            정말 감사하는 마음으로 잘 봤습니다. 저.. '세션의 관리'에 대한 강의를 계획중이신지 궁금합니다.
            전의 예제에 있던 문제는 데이터베이스를 구현하면서 잘 해결되었지만 어떻게 세션 정보를 expire시킬까?, 세션을 모두 삭제해줘야할 때는 언제일까? 와 같은 DB 상에서의 세션 관리 방법에 대해 좀 더 알고 싶습니다.
            --
            좋은 강의에 감동 받고 있습니다. 이렇게 잘 소화된 내용을 한국어로 쉽게 들을 수 있어서 정말 행복합니다. 최근 비영리화에 대한 소식도 들었는데 진심으로 축하드리고 Donation도 꼭 하고 싶어요. 채널이 열린다면 꼭 알려주세요. 응원합니다.