사용자 등록을 할 때, 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');
});
});
});
username
, password
, displayName
을 가져오고, 특히 password 는 salt
를 통해서 pbkdf2
암호화를 진행한 값을 넣는다.(여기에서는 hasher에 의해서 hash에 해당한다) 또한, hash 하는 데 사용했던, salt 값 또한 적어준다.users
(유저들의 데이터를 모아놓는 배열) 로 보내준다.displayName
을 보내주고, session을 저장한다.redirect
를 통해서, /welcome
페이지로 보내준다.(users
배열)
//전역변수로 users 배열응 정의한다.
var users = [
{
username: 'Juni_K',
salt: 'Gw6iS1wW4tQOVQ+qupK9O32i67UPRO+/nbEyyQVWJafxEUu1Yxl03WNyjld/WzVJLDOhzz+V5tsbu8PC0diDlA==',
password: 'rBtRP4248JzbLQr8KlJO1jCVVza1l5NHs14AqA/9vjy/g20Kilz586LmplcgqKymUNAi8EpGzF8NrRNfiCP9PIqoSG6NTdzOQC7sEOYmCrwZx92fWhZ6UF580P5uNPRaFjoB3ivKOkx9iRu9nZ8EqVqDEB4LI2RHvJI884otdec=',
displayName: 'JHK'
}
];