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-flasherrorMessage,就又被導回上一頁,也就是登入頁面了,也難怪我沒看到「錯誤訊息提示:帳號已被註冊」。
另外在思考要什麼時候可以進入「註冊」頁面,因為這個部落格一開始的設計是只有個人使用,還沒有推到讓其他人註冊的想法,但又要在註冊裡面寫入密碼雜湊的語法,產生 hash 的密碼放入資料庫,這個想法還在思考中。

w17 部落格改寫:登入功能

登入也是我一直疑惑的點,因為要將 database 的帳密帶到 controllers 裡使用,然後靜態頁面 POST 的內容也要拿來使用,將資料庫的 hash 密碼與登入頁面輸入的密碼兩相對照,符合便可以帶 session 登入。主要讓我疑惑的地方是:要怎麼 database 的帳密帶到 controllers 裡使用,在 findOne 中找到相符的帳號後,用 .then(user => {}) 取出了 dataTable 內的欄位,像是 user.username 就可以取出 dataTable 內的 username 值。
這還沒有結束,我在 bcrypt.compare(plainPassword, hash, function(err, result) 這邊也卡了一下,為什麼抓不到 hashplainPassword 的值,也是沒有想清楚變數的 scope,另外還有怎麼樣才是兩個密碼相符,可以帶上 session?當 result = true 表示二密碼相符,反之為 false 表示密碼不相符,期間使用 console.log(err) 印出的好像都是 undefined,所以在判斷密碼不相符的時候,也花了一些時間去印出變數(errresult)來確認。

w17 部落格改寫:登出功能

登出也要一個路由./logout,一開始天真的以為就像是路徑一樣('/')按下登出後,直接回到首頁,結果發現怎麼樣 req.session.username 都還在,沒有成功登出。

感受

跟著課程影片實際做,速度仍是稍快了一些,自己試著做一遍才發現還有很多沒想明白的地方。

今天終於可以將戴了四年多的矯正器拆掉啦!好感動!!

Decisional 決定行動

希望明天可以繼續完成部落格文章的部分。

#Blog #Sequelize #Express







你可能感興趣的文章

AI輔導室|中途取消陰影效果

AI輔導室|中途取消陰影效果

協作-使用 Pull Request (PR)

協作-使用 Pull Request (PR)

[Day 07]: Dockerfile 初探

[Day 07]: Dockerfile 初探






留言討論