base64编码解码

业务场景:假设要将一下类似登录信息或者用户信息直接存储在localstorage或者sessionStorage,那么会存在安全隐患,本文介绍其中一种优化方法,就是通过base64编码解码
base64思想如下:

// 将对象序列化为JSON字符串
	let jsonString = JSON.stringify(sessionStore);
	// 对JSON字符串进行Base64编码
	let base64String = window.btoa(jsonString); // 注意:btoa是浏览器提供的方法,用于将ASCII字符串编码为Base64格式
	
	// // // 后续若要恢复对象
	let decodedJsonString = window.atob(base64String); // 解码Base64字符串
	let restoredObject = JSON.parse(decodedJsonString); // 反序列化为原对象

实际应用结合sessionStorage:

// 假设有一个复杂对象
let sessionStore = {
  name: "John Doe",
  age: 30,
  address: {
    street: "123 Main St.",
    city: "New York"
  }
};
 // 将对象序列化为JSON字符串
 let jsonString = JSON.stringify(sessionStore);
// 对JSON字符串进行Base64编码
 let base64String = window.btoa(jsonString); // 注意:btoa是浏览器提供的方法,用于将ASCII字符串编码为Base64格式	
 sessionStorage.setItem('jimoTrackerSessionStore', base64String); // 数据进行编码成字符串后存储起来。

在其他页面存取使用:假设在其他ts文件里:
//获取存储的base64编码
  let jimoTrackerSession= sessionStorage.getItem('jimoTrackerSessionStore') as string; 
  // base64解码要恢复对象
  let decodedJsonString = window.atob(jimoTrackerSession); // 解码Base64字符串
  ctx.sessionStore = JSON.parse(decodedJsonString); // 反序列化为原对象
  console.log(ctx.sessionStore.age) //30,取值成功


以上所有逻辑精简一下:

let sessionStore = {
  name: "John Doe",
  age: 30,
  address: {
    street: "123 Main St.",
    city: "New York"
  }
};
sessionStorage.setItem('jimoTrackerSessionStore', window.btoa(JSON.stringify(sessionStore))); // 数据持久化
ctx.sessionStore = JSON.parse(window.atob(sessionStorage.getItem('jimoTrackerSessionStore') as string)|| '{}');
console.log(ctx.sessionStore.age) //30,取值成功
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值