解决 Hapi 框架中的错误:TypeError: Strinfigied secret must be a buffer

阅读时长 4 分钟读完

在使用 Hapi 框架构建 web 应用程序时,有时可能会遇到如下错误:

这个错误通常发生在使用 hapi-auth-cookie 插件时,原因是插件需要传入一个 Buffer 格式的密钥作为参数,但传入的是字符串。

本文将介绍如何解决这个错误,以及如何正确使用 hapi-auth-cookie 插件。

解决 TypeError: Strinfigied secret must be a buffer 错误

要解决这个错误,最简单的方式是将传入的字符串使用 Buffer.from() 方法转换为 Buffer 格式。

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

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

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

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

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

-------

在上面的示例代码中,我们使用 Buffer.from() 方法将字符串 'some password' 转换成了 Buffer,然后将其作为 cookie.password 的值传递给了 hapi-auth-cookie 插件。

这样就可以解决这个错误了。但是,正确使用 hapi-auth-cookie 插件还有一些其他注意事项。

正确使用 hapi-auth-cookie 插件

当使用 hapi-auth-cookie 插件时,我们需要定义一些路由和策略。

首先,在插件的注册选项中启用 cookie:

然后,定义一个策略。这个策略用于验证用户的访问授权。如果用户没有授权,它将重定向到登录页面。

在上面的示例中,我们使用 cookie 选项传递了一个密码,该密码将用于安全地加密和解密 cookie 数据。我们还指定了 redirectTo 选项,以指示如果用户没有授权,则应将其重定向到 /login 页面。appendNext 选项通过在URL中添加查询字符串参数 next 来允许我们指定一个回调URL,该回调URL将在用户成功登录后被调用。

最后,定义一些路由,这些路由将需要用户访问授权。可以使用 config.auth 选项将策略应用到路由上。

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

在上面的示例中, only authenticated users are permited to access the /private URL。我们使用 auth 选项指定了使用我们定义的名为 session 的策略来验证用户的访问授权。如果验证失败,用户将被重定向到 /login 页面。

总结

在使用 Hapi 框架构建 web 应用程序时,使用 hapi-auth-cookie 插件进行用户访问授权验证时可能会遇到错误 TypeError: Strinfigied secret must be a buffer。我们可以使用 Buffer.from() 方法将传递给插件的字符串转换为 Buffer 来解决这个错误。此外,我们还需要定义一些路由和策略,确保正确使用 hapi-auth-cookie 插件进行用户访问授权验证。

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

纠错
反馈