如何在 Node.js 中使用身份驗證(authentication)
Node.js 是一個廣受歡迎的 JavaScript 執行環境,它可以用於開發各種應用程式,包括 Web 應用程式。在開發 Web 應用程式時,身份驗證是一個重要的部分,它可以確保只有授權的用戶才能存取應用程式的資源。在本文中,我們將介紹如何在 Node.js 中使用身份驗證。
使用 Passport.js 驗證
Passport.js 是一個身份驗證中介軟體,它可以讓開發者輕鬆地在 Node.js 應用程式中實現身份驗證。它支援多種不同的驗證方案,包括 OAuth、OpenID Connect 和自定義的驗證方案。
要在 Node.js 應用程式中使用 Passport.js,首先需要安裝它:
npm install passport
接下來,需要在應用程式中設定 Passport.js:
const passport = require('passport'); app.use(passport.initialize()); app.use(passport.session());
接下來,需要設定驗證策略,例如使用 OAuth:
passport.use(new OAuthStrategy({ clientID: '...', clientSecret: '...', callbackURL: '...' }, function(accessToken, refreshToken, profile, cb) { // 驗證成功後的處理 }));
最後,需要設定路由,以便用戶可以通過路由進行驗證:
app.get('/auth/oauth', passport.authenticate('oauth')); app.get('/auth/oauth/callback', passport.authenticate('oauth', { failureRedirect: '/login' }), function(req, res) { // 驗證成功後的處理 });
現在,您已經可以在 Node.js 應用程式中使用 Passport.js 來實現身份驗證了。
使用 JSON Web Token 驗證
JSON Web Token (JWT) 是一種用於發佈和驗證安全令牌的標準。它可以用於在 Node.js 應用程式中實現身份驗證。
要在 Node.js 應用程式中使用 JWT,首先需要安裝 jsonwebtoken 套件:
npm install jsonwebtoken
接下來,需要使用 jsonwebtoken 套件創建 JWT:
const jwt = require('jsonwebtoken'); const token = jwt.sign({ data: 'foobar' }, 'secret', { expiresIn: '1h' });
接下來,需要將 JWT 傳遞給用戶:
res.json({ token: token });
最後,需要在應用程式中設定路由,以便用戶可以使用 JWT 驗證:
app.get('/protected', passport.authenticate('jwt', { session: false }), function(req, res) { // 驗證成功後的處理 });
現在,您已經可以在 Node.js 應用程式中使用 JWT 來實現身份驗證了。
總結
在本文中,我們介紹了如何在 Node.js 應用程式中使用身份驗證。我們介紹了如何使用 Passport.js 和 JSON Web Token 來實現身份驗證,並提供了程式碼範例供參考。