作者:吳祐賓
Express 框架本身並未內建基本身份驗證(Basic Authentication)的功能,但你可以使用第三方的中介軟體(middleware)來實現。一個常見的方式是使用 basic-auth 這個 npm 套件。以下是一個簡單的範例:
首先,安裝 basic-auth 套件:
npm install basic-auth
然後,在你的 Express 應用程式中使用它:
const auth = require('basic-auth'); // 中介軟體函式,用於進行基本身份驗證 const basicAuth = (req, res, next) => { const credentials = auth(req); if (!credentials || credentials.name !== 'username' || credentials.pass !== 'password') { res.setHeader('WWW-Authenticate', 'Basic realm="example"'); res.status(401).send('Authentication required'); return; } // 認證成功,繼續處理下一個中介軟體或路由 next(); }; // 使用中介軟體進行基本身份驗證 app.use(basicAuth);
這個範例中,我們引入了 basic-auth 套件,並建立一個自定義的中介軟體 basicAuth 用於進行基本身份驗證。當瀏覽其它任何路由時,會先使用 app.use(basicAuth) 將中介軟體套用到所有路由之前,進行身份驗證。你可以將 'username' 和 'password' 替換為實際的使用者名稱和密碼。
請注意,基本身份驗證的方式相對簡單,建議在實際應用中使用更強大的身份驗證機制,例如 JSON Web Tokens(JWT)或 OAuth。
使用基本身份驗證是在開發時可以很快速的有個驗證機制,之後要替換也很快速。
接下來呢?
你可以在 basicAuth 時先使用 session 檢查,如果已經登入就不再需要經過基本身份驗證。大概如下面的程式範例。
const basicAuth = (req, res, next) => {
if (req.session.user) {
next();
return;
}
總結
Basic Authentication 基本身份驗證是多數 Web API 服務所支援的基礎驗證技術(就如它的名字一樣),由於是明碼在網路上傳輸,所以安全性來說相對較低。若實戰要使用時請務必使用加密傳輸 (https),才能確保其服務的安全。
不過在開發的過程一直要驗證也是挺麻煩的,所以驗證功能通常會在專案的最後再上線。提供您參考。
和你分享。
See also
文首圖片來源:攝影師:Life Of Pix: https://www.pexels.com/zh-tw/photo/4291/
沒有留言:
張貼留言