在前端开发过程中,我们经常需要处理敏感信息,比如 API 密钥、数据库密码等等,这些信息往往不能暴露在前端代码中,而需要以安全的方式存储和管理。此时使用 keychain-env 这个 npm 包可以帮助我们解决这个问题。
什么是 keychain-env
keychain-env 是一个用于存储敏感信息的 npm 包。它通过 macOS Keychain 或者 Windows Credential Store 来存储这些信息,可以确保这些信息不会暴露在代码或者配置文件中,同时也保障了这些信息的安全性。
安装
先使用 npm 安装 keychain-env:
npm install keychain-env --save
目前 keychain-env 可以支持 macOS 和 Windows 操作系统。
用法
keychain-env 的使用非常简单,它提供了几个 API 来存储、获取、删除敏感信息。
存储
使用 set 方法可以将敏感信息存储到本地系统的凭据管理器中(Keychain 或者 Credential Store):
-- -------------------- ---- ------- ----- -------- - ------------------------ -- ----- - ---------- -------------- -------- ------------- -------- ----------- --------- -------------------- -- ---------- - ----------------------- --------- ---
调用 set 方法需要传入一个对象,包含了 service(服务名称)、account(账户名)和 password(密码)三个属性,以及回调函数,用来处理错误和成功信息。
获取
使用 get 方法可以从本地系统的凭据管理器中获取之前存储的敏感信息:
-- -------------------- ---- ------- ----- -------- - ------------------------ -- -------- - ---------- -------------- -------- ------------- -------- ---------- -- ------------- ----- - -- ----- ----- ---- --------------------- --- ---------- -------- -- - - --------------- ---
调用 get 方法需要传入一个对象,包含了 service(服务名称)和 account(账户名)两个属性,以及回调函数,用来处理错误和成功信息。如果没有找到对应的敏感信息,回调函数的第二个参数 cred 将会是一个空对象。
删除
使用 delete 方法可以从本地系统的凭据管理器中删除之前存储的敏感信息:
-- -------------------- ---- ------- ----- -------- - ------------------------ -- ------ - ---------- ----------------- -------- ------------- -------- ---------- -- ------------- - -- ----- ----- ---- ----------------------- ---------- ---
调用 delete 方法需要传入一个对象,包含了 service(服务名称)和 account(账户名)两个属性,以及回调函数,用来处理错误和成功信息。
示例代码
下面是一个完整的示例代码,演示了如何使用 keychain-env 存储和获取敏感信息:
-- -------------------- ---- ------- ----- -------- - ------------------------ -- ----- - ---------- -------------- -------- ------------- -------- ----------- --------- -------------------- -- ---------- - ----------------------- --------- -- -------- - ---------- -------------- -------- ------------- -------- ---------- -- ------------- ----- - -- ----- ----- ---- --------------------- --- ---------- -------- -- - - --------------- -- ------ - ---------- ----------------- -------- ------------- -------- ---------- -- ------------- - -- ----- ----- ---- ----------------------- ---------- --- --- ---
如果一切正常,控制台将会输出下面这几行信息:
Credential stored Password for my-service username is sensitive-password Credential deleted
总结
使用 keychain-env 可以方便地管理敏感信息,让前端开发者可以更加安心和自信地处理这些信息。当然,它只是一种方案,如果你有其他更好的解决方案,欢迎在评论区分享!
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6005731581e8991b448e9430