如何在 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 來實現身份驗證,並提供了程式碼範例供參考。

Categorized in:

Tagged in:

,