※当方駆け出しエンジニアのため、間違っていることも多々あると思いますので、ご了承ください。また、間違いに気付いた方はご一報いただけると幸いです。
bcryptを用いたハッシュ化
bcrypt というパッケージを用いて、Node.jsでパスワードをハッシュ化し保存します。
例としてusersControllerでサインアップ時にパスワードをハッシュ化します。
bcryptをインストールします。
npm install bcrypt
ハッシュ化を実施するコントローラーでロードします。
以下のようなusresControllerがあるとします。サインアップ時に使用するコントローラーです。
ORMにsequelizeを用いています。
sequelizeについては、こちらをご覧ください。
【Express】ExpressにSequelizeを導入しORMでデーターベースを操作する。(SQLite3)
usersController.js
functionsignup(req,res){db.sequelize.sync().then(()=>db.User.create({name:req.body.name,email:req.body.email,pass:req.body.password})).then(usr=>{res.redirect('/home');})}bcryptをロードし、signup関数のpromiseチェーンに、ハッシュ化関数をかまします。
usersController.js
constbcrypt=require('bcrypt');//bcryptをロードfunctionsignup(req,res){db.sequelize.sync().then(()=>bcrypt.hash(req.body.password,10))//ハッシュ化関数をかまします。第二引数はハッシュ化の強度となります。.then(hashedPassword=>db.User.create({//生成されたハッシュを引数hashedPasswordで受け取ります。name:req.body.name,email:req.body.email,pass:hashedPassword//ハッシュ化されたものを保存します。})).then(usr=>{res.redirect('/home');})}