iT邦幫忙

2023 iThome 鐵人賽

DAY 22
0
自我挑戰組

網頁學習30天系列 第 22

網頁學習30天 day22

  • 分享至 

  • xImage
  •  

上次的程式碼雖然可以登入,但會遇到一個問題,就是直接輸入登入的網址一樣能成功登入而不需要帳號密碼,但這樣並不實際,因此我們需要做更改:

if (body.username === "aaa" && body.password === "123") {
    // 登錄成功,返回 login-success.html 頁面
    sendResponse(`login-success${selector}.html`, 200, response);
  } else {
    // 登錄失敗,保持在登入頁面
    response.writeHead(302, {
      Location: "/login-fail.html"
    });
    response.end();
  }
});

成功登入畫面:
https://ithelp.ithome.com.tw/upload/images/20231006/20162857Fq0VNqZGDd.png
若直接輸入網址:
https://ithelp.ithome.com.tw/upload/images/20231006/201628578LcpEBLH1T.png
這個邏輯屬於基於伺服器端的表單驗證(Server-Side Form Validation)。在這種方法中,當用戶提交表單時,伺服器端會處理用戶輸入的數據,如果數據合法,伺服器會返回一個成功的響應,導向成功頁面。如果數據不合法,伺服器會返回一個失敗的響應,保持用戶在登入頁面,用戶需要重新填寫表單。

這種方式的優勢在於,伺服器能夠完全掌控用戶輸入的數據,並且能夠執行更嚴格的驗證和處理。缺點是,用戶體驗可能較差,因為用戶需要等待伺服器的響應,如果登入失敗,用戶需要重新輸入信息。

這種方法的安全性相對較高,因為伺服器能夠避免一些常見的客戶端攻擊,比如 JavaScript 注入攻擊。但需要在伺服器端進行較多的處理和判斷,並且用戶體驗可能不如客戶端驗證(Client-Side Form Validation)那麼流暢。


上一篇
網頁學習30天 day21
下一篇
網頁學習30天 day23
系列文
網頁學習30天30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言