# 🏅 Day 31 - 實作重設密碼 運用前幾天提到的 validator、bcrypt.js、JWT 嘗試實作重設密碼功能 題目 --- 實作重設密碼 API `POST /users/updatePassword` 流程大致上為: 接收 request body 的資料 → 驗證:密碼與確認密碼欄位值需為一致,可自行加上必填欄位、密碼需至少 8 碼以上,並包含英文與數字 ... 等等 → 使用 [bcryptjs](https://www.npmjs.com/package/bcryptjs) 將密碼進行 hash → 更新至資料庫 → [jsonwebtoken](https://github.com/auth0/node-jsonwebtoken) 產生 JWT 並回傳 user 資料及 token ## 回報流程 將答案寫在 CodePen 並複製 CodePen 連結貼至底下回報就算完成了喔! 解答位置請參考下圖(需打開程式碼的部分觀看)  <!-- 解答: 參考範例 https://github.com/gonsakon/express-week4-sample/blob/week6/routes/users.js#L61-L73 ```javascript router.post('/updatePassword', isAuth, handleErrorAsync(async (req,res,next) => { const { password, confirmPassword } = req.body; // 簡單驗證新密碼與再次輸入一致(可再自行加上 validator 驗證) if (password !== confirmPassword) { return next(appError("400","密碼不一致!",next)); } // 將新密碼加密 newPassword = await bcrypt.hash(password,12); // 更新資料庫 const user = await User.findByIdAndUpdate(req.user.id, { password: newPassword }); // JWT generateSendJWT(user, 200, res); //(將產生 JWT token 並回傳資訊包裝成一個函式 generateSendJWT) // https://github.com/gonsakon/express-week4-sample/blob/a64c7d7e50aad774cc15b344426297470613b0aa/service/auth.js#L35-L48 })) ``` --> 回報區 --- <!-- 將答案貼至下方表格內,格式: | Discord 暱稱 | [CodePen](連結) | --> | Discord | CodePen / 答案 | |:-------------:|:-----------------:| | xxx | [CodePen]() | | 苡安 | [hackmd](https://hackmd.io/@L7K9-66lSeagS28AP0_GjQ/rk_RiRf7A) | | william威良 | [CodePen](https://codepen.io/snowman12320/pen/wvbKWvb?editors=1010) | | jenny7532 | [CodePen](https://codepen.io/wei-chen-wu/pen/wvbKWBb) | | Hank | [CodePen](https://codepen.io/tw1720/pen/pomowmx) | | Tiya | [CodePen](https://codepen.io/Tiya_blank/pen/rNbQPbY) | | Chia Pin | [CodePen](https://codepen.io/joker-cat/pen/abrvmro) | | wei | [CodePen](https://codepen.io/Wei-the-sasster/pen/LYopxQB?editors=0010) | | william_hsu | [CodePen](https://codepen.io/william8815/pen/GRapmWy) | |Lobinda|[HackMD](https://hackmd.io/@Lobinda/rkMJTatmR)| | runweiting |[CodePen](https://codepen.io/weiting14/pen/gOJrNYX)| |Mei|[CodePen](https://codepen.io/l_umei/pen/rNgMoBV?editors=0010)| | Fabio20 | [CodePen](https://codepen.io/fabio7621/pen/ZENBjMP) |
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up