Day 127 (Week19), 2021/08/16 (Monday)
學習時數:5.5 hr
Done
- [done] w17 hw1 部落格改寫(登入、註冊功能)
To Do @ this week
- [done] w17 [BE201]
- [ ] w17 HW1 部落格改寫
學習心得紀錄
Objective 客觀
w17 部落格改寫:註冊功能
要怎麼寫錯誤訊息提示?想要做出「帳號已被註冊」的提示,但是輸入已被註冊過的帳號,都沒有出現在登入頁面,不過有在 terminal
出現 console.log
的部分,然後就去找到底發生了什麼事,後來發現與 res.redirect('back')
有關,因為我把他放在這一整段 code 最末端,所以不管是哪一條的錯誤訊息提示,執行到最後一段 code 時,都會經過這一行 res.redirect('back')
,所以我還來不及看到 connect-flash
的 errorMessage
,就又被導回上一頁,也就是登入頁面了,也難怪我沒看到「錯誤訊息提示:帳號已被註冊」。
另外在思考要什麼時候可以進入「註冊」頁面,因為這個部落格一開始的設計是只有個人使用,還沒有推到讓其他人註冊的想法,但又要在註冊裡面寫入密碼雜湊的語法,產生 hash 的密碼放入資料庫,這個想法還在思考中。
w17 部落格改寫:登入功能
登入也是我一直疑惑的點,因為要將 database
的帳密帶到 controllers
裡使用,然後靜態頁面 POST 的內容也要拿來使用,將資料庫的 hash 密碼與登入頁面輸入的密碼兩相對照,符合便可以帶 session 登入。主要讓我疑惑的地方是:要怎麼 database
的帳密帶到 controllers
裡使用,在 findOne
中找到相符的帳號後,用 .then(user => {})
取出了 dataTable 內的欄位,像是 user.username
就可以取出 dataTable 內的 username
值。
這還沒有結束,我在 bcrypt.compare(plainPassword, hash, function(err, result)
這邊也卡了一下,為什麼抓不到 hash
及 plainPassword
的值,也是沒有想清楚變數的 scope,另外還有怎麼樣才是兩個密碼相符,可以帶上 session
?當 result = true
表示二密碼相符,反之為 false
表示密碼不相符,期間使用 console.log(err)
印出的好像都是 undefined
,所以在判斷密碼不相符的時候,也花了一些時間去印出變數(err
、result
)來確認。
w17 部落格改寫:登出功能
登出也要一個路由./logout
,一開始天真的以為就像是路徑一樣('/'
)按下登出後,直接回到首頁,結果發現怎麼樣 req.session.username
都還在,沒有成功登出。
感受
跟著課程影片實際做,速度仍是稍快了一些,自己試著做一遍才發現還有很多沒想明白的地方。
今天終於可以將戴了四年多的矯正器拆掉啦!好感動!!
Decisional 決定行動
希望明天可以繼續完成部落格文章的部分。