前言
近年来,静态网站生成器 (SSG) 逐渐普及,而 Netlify 作为一个全托管服务提供商,在这一领域中表现突出。Netlify CMS 是 Netlify 公司开源的一个 CMS 规范,它的前端应用实现是一个 React 组件,而 @rrpm/netlify-cms-lib-auth 是一个 npm 包,主要用于为 Netlify CMS 组件提供认证验证服务。
安装
使用 npm 或者 yarn 安装:
npm install @rrpm/netlify-cms-lib-auth
或
yarn add @rrpm/netlify-cms-lib-auth
使用
@rrpm/netlify-cms-lib-auth 的使用非常方便,从网上下载一个现有的项目模板,在模板中找到 src/cms/cms.js
文件,引入 @rrpm/netlify-cms-lib-auth
并调用 authenticate
函数即可。下面是一个英文语言的示例:
-- -------------------- ---- ------- ------ --- ---- ------------------ ------ - ------------ - ---- ----------------------------- ---------- ------- - -------- - ----- --------- ------------------- ----- ------------- ------ --------- -- - ------------------ --------- -- - ----- - ------ ------------ - - --------- -------------- - ------ ------------ --- -- ---------- -- - -------------- --- -- ----- ------------ ------- --------- -- ----- -- ---
而下面是一个中文语言的示例:
-- -------------------- ---- ------- ------ --- ---- ------------------ ------ - ------------ - ---- ----------------------------- ---------- ------- - -------- - ----- --------- ------------------- ----- ------------- ------ --------- -- - ------------------ --------- -- - ----- - ------ ------------ - - --------- -------------- - ------ ------------ --- -- ---------- -- - -------------- --- -- ----- --------- ------- --------- -- ----- -- ---
最后再简要说明一下以上示例的作用。通过调用 authenticate
函数,可以获取到访问令牌和刷新令牌,这些令牌可以用于请求受保护资源。同时,在 backend
字段中指定仓库、分支等信息,即可让 Netlify CMS 组件通过认证后,去访问你的 GitHub 仓库,实现 CMS 数据的读取与更新。
探究
在 Netlify CMS 的错误处理逻辑中,我们可以看到 authenticate 函数的错误信息是何时被捕获的。如果向 authenticate
函数传递了错误的认证信息,此时 authenticate
函数并没有被捕获,而是通过 callback
返回给了 authenticateUser
函数,最终抛出了认证错误的异常。这可以从以下代码中看出:
try { const authData = await api.authenticate(credentials); return handleAuth(authData.token, authData.refresh_token); } catch (error) { return Promise.reject(new Error('Failed to authenticate')); }
因此,我们也能够从中看出 authenticate
函数的设计原则。它应该返回一个包含 token
和 refreshToken
的 Promise 对象。这个 Promise 对象只有在认证成功时才会被 Resolve,否则会被 Reject,并使用 Promise 的 catch 函数捕获错误。因为 Promise 对象比异步函数更加灵活,便于在不同的上下文环境中调用。
总结
通过以上介绍,我们了解了如何通过 @rrpm/netlify-cms-lib-auth
为 Netlify CMS 组件提供认证验证服务。同时,也有了一定的深度探究,希望本文对你有所启发,能够在实际项目开发过程中,发挥出更大的作用。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60066b5c51ab1864dac67082