npm 包 @hapi/bell 使用教程

阅读时长 6 分钟读完

介绍

在前端开发中,登录是一个常见的功能。为了方便开发人员,有很多第三方库提供了快速实现登录的方法。其中,@hapi/bell 是一款非常优秀的 npm 包,它可以帮助我们通过各种社交账号实现登录。本文将详细介绍 @hapi/bell 的使用方法,以及解释其内部实现原理。

安装

首先,我们需要在项目中安装 @hapi/bell。可以使用 npm 或 yarn,如下所示:

配置

安装完毕之后,我们需要对其进行配置。我们可以在项目中新建一个 config 目录,在其中新建一个 auth.js 文件,然后在其中写入以下内容:

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

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

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

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

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

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

上述代码中使用了 config 库来获取配置信息,因此需要先安装:

配置中用到了 github 的 OAuth2 认证,因此还需要前往 github developer settings 中创建一个 OAuth App,然后将 CLIENT ID 和 CLIENT SECRET 配置在项目的配置文件中。我们可以在项目根目录新建一个 config 文件夹,然后在其中创建 default.json 文件,写入以下配置项:

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

其中,cookie.password 是 cookie 的加密密钥,需要设定一个随机的字符串。如需在生产环境中使用 https,请将 isSecure 设置为 true

然后,在项目中使用 server.register 注册上述授权策略即可。

使用

在配置好 @hapi/bell 之后,我们就可以在路由中使用 handler 来实现登录。例如,在登录路由中可以写入以下代码:

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

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

上述代码中,我们判断了 session 中有没有用户信息,如果有就直接跳转到首页。否则,将会显示一个登录的链接,点击链接会跳转到 Github 的登录页面,然后进行认证。认证成功之后,会跳转回登录路由。

登录成功之后,用户信息会存储在 session 中,可以在任何一个路由中获取这些信息:

上述代码中,我们从 session 中获取了用户信息,然后展示了用户的名字。

原理

@hapi/bell 的原理是使用 OAuth2 协议来认证用户身份。在配置文件中,我们设定了 CLIENT ID 和 CLIENT SECRET,这些信息需要和 github endpoint 进行通信才能获得 token。在请求 github endpoint 时,我们需要传递一些参数:

  • client_id: CLIENT ID
  • client_secret: CLIENT SECRET
  • code: github 授权之后返回的 code 参数

在得到 token 之后,我们就可以获得用户信息。

总结

@hapi/bell 是一款非常优秀的 npm 包,可以帮助我们通过各种社交账号实现登录。在使用时,需要注意配置项,确保 CLIENT ID 和 CLIENT SECRET 正确。同时,我们还介绍了 @hapi/bell 的实现原理,希望可以帮助读者更好地理解这款 npm 包。

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