【问题标题】:Using Base64 encoding in Angular 4在 Angular 4 中使用 Base64 编码
【发布时间】:2018-02-04 20:11:03
【问题描述】:

我想使用 Base64 编码将用户名和密码发送到服务器。

我发现我可以使用 npm 导入以下模块:

    npm install --save angular-base64

我已验证在我的项目文件夹中创建了以下文件夹:node_modules\angular-base64

在我的 component.js 文件中,我尝试使用以下任何一行来导入组件:

    import 'angular-base64/angular-base64'; 

它不会抱怨导入,但是当我尝试使用以下行时:

    headers.append('Authorization', 'Basic ' + base64.encode('username:temppass'));

它说“找不到base64”。

【问题讨论】:

  • 如果您出于安全考虑这样做,您将失败。处理机密时使用 https (TLS, SSL a.s.o)
  • @stefanbachert 我们仍然需要发送加密的密码,因为服务器端代码需要它。
  • 对于 angular-base64 库,请务必以美元符号 $ 为前缀,即 $base64.encode('username:temppass')

标签: angular encoding module base64


【解决方案1】:

您实际上并不需要为此目的使用外部库。

WindowOrWorkerGlobalScope.btoa() 方法创建一个 base-64 编码 来自 String 对象的 ASCII 字符串,其中每个字符 string 被视为二进制数据的字节。

使用btoa()函数进行编码:

console.log(btoa("username:temppass")); // dXNlcm5hbWU6dGVtcHBhc3M=

要解码,可以使用atob()函数:

console.log(atob("dXNlcm5hbWU6dGVtcHBhc3M=")); // username:temppass

查看支持的浏览器列表here

【讨论】:

  • btoa() 不能用于对 Latin1 范围之外的字符进行编码。
  • @Shadoweb Buffer.from(<string>).toString('base64') 现在应该代替btoa()
  • 谢谢@StephanKulla,但最后只是VSC报错了,重启解决了问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-02-28
  • 2015-07-14
  • 1970-01-01
  • 1970-01-01
  • 2017-01-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多