사용자 등록을 할 때, pbkdf2 방식으로 사용자의 비밀번호를 저장하는 방법에 대해서 알아보도록 한다.

우선 회원가입하는 부분은 /welcome 에서 Register 를 통해서 회원가입을한다.

(/auth/register , methods = "GET")

app.get('/auth/register', function(req,res){
  var output = `
  <h1>Register</h1>
  <form action="/auth/register" method="post">
    <p>
      <input type="text" name="username" placeholder="username">
    </p>
    <p>
      <input type="password" name="password" placeholder="password">
    </p>
    <p>
      <input type="text" name="displayName" placeholder="displayName">
    </p>
    <p>
      <input type="submit">
    </p>
  </form>
  `;
  res.send(output);
});

submit를 하면 입력한 데이터가 가는 곳은, "/auth/register, method='POST'" 로 가게된다.

("/auth/register, method='POST'")

app.post('/auth/register', function(req,res){
  hasher({password:req.body.password}, function(err,pass,salt,hash){
    var user = {
      username: req.body.username,
      password:hash,
      salt:salt,
      displayName:req.body.displayName
    };
    // users 배열에 user를 보낸다.
    users.push(user);
    // 바로 로그인 시켜주고, '/Welcome'으로 이동한다.
    req.session.displayName = req.body.displayName;
    req.session.save(function(){
      res.redirect('/welcome');
    });
  });
});

(users 배열)

//전역변수로 users 배열응 정의한다.
var users = [
  {
    username: 'Juni_K',
    salt: 'Gw6iS1wW4tQOVQ+qupK9O32i67UPRO+/nbEyyQVWJafxEUu1Yxl03WNyjld/WzVJLDOhzz+V5tsbu8PC0diDlA==',
    password: 'rBtRP4248JzbLQr8KlJO1jCVVza1l5NHs14AqA/9vjy/g20Kilz586LmplcgqKymUNAi8EpGzF8NrRNfiCP9PIqoSG6NTdzOQC7sEOYmCrwZx92fWhZ6UF580P5uNPRaFjoB3ivKOkx9iRu9nZ8EqVqDEB4LI2RHvJI884otdec=',
    displayName: 'JHK'
  }
];