npm 包 @matthewglover/hapi-oauth 使用教程

阅读时长 8 分钟读完

在现今社交媒体时代,使用社交账户进行网站认证已经越来越普遍,Hapi 是一款 Node.js 框架,这个框架的 OAuth 2.0 插件 @matthewglover/hapi-oauth,使得在 Hapi 框架中集成 OAuth 认证变得更加容易。

什么是 OAuth 认证?

OAuth 是一个开放标准框架,它允许用户授权第三方应用程序访问他们存储在另一个服务提供程序上的资源,而不需要将用户的用户名和密码提供给第三方应用程序。

OAuth 授权是基于场景的,授权服务器提供的访问权限可以是时间限制的,例如,它可以仅限于“只读访问”(读取他的邮件)或“完全访问”(发送邮件)访问,以及请求环节的详细信息。

OAuth 分为 4 种授权类型,“授权码”、“密码”、“客户端凭证”和“隐式”,详细可参考 OAuth 2.0 规范。

@matthewglover/hapi-oauth 是什么?

@matthewglover/hapi-oauth 是一个 Hapi 插件,它允许您从常见的 OAuth 2.0 提供程序(如 Google、Facebook、GitHub、Twitter 等)中配置 OAuth 应用程序,支持多种 OAuth 2.0 授权类型,为 Hapi 应用程序快速集成 OAuth 认证提供了便利。

如何使用 @matthewglover/hapi-oauth?

  1. 安装 npm 包

从 npm 上安装 @matthewglover/hapi-oauth

  1. 配置 OAuth 2.0 提供商

根据您的 OAuth 提供商,您可以创建一个新的 OAuth 应用或使用现有的 OAuth 应用。下面是一些 OAuth 2.0 提供商的应用创建链接:

  1. 配置插件

接下来,在 Hapi 应用程序的插件配置中添加 @matthewglover/hapi-oauth:

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

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

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

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

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

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

在这里我们使用了 Google OAuth 2.0 Provider,您需要配置 provider、password、clientId、isSecure、scope、redirectUri 和 baseUrl。这些属性在每个 OAuth 提供商的应用程序中都有所不同,因此您需要进行适当的配置。

  1. 创建 OAuth 路由

在 Hapi 应用程序的路由中创建 OAuth 授权路由:

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

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

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

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

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

运行此应用程序并尝试访问 '/auth/google',它将使用 Google OAuth 2.0 提供商进行授权,并将用户引导回 '/auth/callback'。在 '/auth/callback' 路由处理程序中,@matthewglover/hapi-oauth 插件使用访问令牌交换用户授权代码。

现在您可以在此处处理该访问令牌。

结论

@matthewglover/hapi-oauth 是一款功能强大的 Hapi 插件,可以轻松地将常见的 OAuth 2.0 提供程序集成到 Hapi 应用程序中,为用户提供更方便的登录方式。通过上述步骤,您可以快速集成 OAuth 认证,来让您的 Hapi 应用程序更加优秀。

示例代码

下面是示例代码,以 Google OAuth 2.0 为例:

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

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

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

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

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

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

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

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

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

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

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

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60066bcb967216659e244706

纠错
反馈