Passport-Github 使用教程

阅读时长 5 分钟读完

Passport 是一个 Node.js 的身份验证中间件,它可以轻松添加多种身份验证策略。在本文中,我们将介绍如何使用 Passport 和 passport-github npm 包实现 Github OAuth2.0 登录。

步骤一:安装依赖

首先,我们需要安装 passport 和 passport-github 两个 npm 包:

步骤二:创建 Github 应用程序

在使用 Github OAuth2.0 登录之前,您需要在 Github 上注册并创建一个应用程序。请按照以下步骤操作:

  1. 在 Github 上登录您的帐户。
  2. 转到“Settings > Developer settings > OAuth Apps”页面。
  3. 单击“New OAuth App”按钮。
  4. 在“Application name”和“Homepage URL”字段中输入您的应用程序名称和主页 URL。
  5. 在“Authorization callback URL”字段中输入您的回调 URL。该 URL 必须与您的应用程序匹配,并且必须以 /auth/github/callback 结尾。
  6. 单击“Register application”按钮。

完成后,您将获得一个“Client ID”和“Client Secret”,这些信息将在下一步中使用。

步骤三:配置 Passport

接下来,我们需要为 Passport 配置 Github 身份验证策略。在您的应用程序启动文件中添加以下代码:

-- -------------------- ---- -------
----- -------- - --------------------
----- -------------- - ------------------------------------

---------------- ----------------
    --------- -----------------
    ------------- ---------------------
    ------------ --------------------------------------------
  --
  --------------------- ------------- -------- ----- -
    -- ------------------
  -
---

请注意,代码中的 GITHUB_CLIENT_ID 和 GITHUB_CLIENT_SECRET 变量应替换为您在步骤二中获得的真实值。callbackURL 应与您在 Github 中注册的回调 URL 匹配。

步骤四:创建登录路由

现在,我们可以创建一个路由来处理 Github 登录请求,并将其链接到 Passport 身份验证策略。在您的应用程序中添加以下代码:

-- -------------------- ---- -------
----- ------- - -------------------
----- -------- - --------------------
----- ------ - -----------------

-------------------------- ---------------------------------

----------------------------------- ------------------------------- - ---------------- -------- ---
  ------------- ---- -
    -- ----------
    ------------------
  -
--

-------------- - -------

第一个路由将用户重定向到 Github 登录页面进行身份验证。第二个路由将在 Github 完成身份验证后调用,并在成功时将用户重定向到应用程序主页。

步骤五:测试登录

使用以上代码,您已经可以在自己的应用程序中实现 Github OAuth2.0 登录了。尝试访问 /auth/github 路由,您将被重定向到 Github 登录页面。成功登录后,您将被重定向回您的应用程序,并可以看到用户信息已经存储在 req.user 对象中。

这是一个示例代码,演示了如何将 Passport 和 passport-github 一起使用:

-- -------------------- ---- -------
----- ------- - -------------------
----- -------- - --------------------
----- -------------- - ------------------------------------
----- ------ - -----------------

-- -------- ------ ------ ------ -- - ------ ------
----- ---------------- - -----------------
----- -------------------- - ---------------------

-- -------- --
---------------- ----------------
    --------- -----------------
    ------------- ---------------------
    ------------ --------------------------------------------
  --
  --------------------- ------------- -------- ----- -
    -- ---------------

- ----------------------------------------------------------- --------
----------------------------------------------------------------------------------
纠错
反馈