首页 > 解决方案 > 谁能帮我如何使用ngrx本地存储来加密和解密数据

问题描述

如何使用ngrx本地存储加密和解密我的存储数据

export function localStorageSyncReducer(reducer: ActionReducer<any>): ActionReducer<any> {
     return localStorageSync({ keys: ['product']}, rehydate:true)(reducer);
}

export const metaReducers: Array<MetaReducer<any, any>> = [localStorageSyncReducer];


标签: javascriptangularstatengrx

解决方案


这是直接在导出函数上添加加密和解密的语法...

export function localStorageSyncReducer(reducer: ActionReducer<any>): ActionReducer<any> {
  return localStorageSync({
    keys: [{'product': {
      encrypt: state => ****ENTER YOUR ENCRYPTION FUNCTION HERE****,
      decrypt: state => ****ENTER YOUR DECRYPTION FUNCTION HERE****
    }}],
    rehydrate: true
  })(reducer);
}

如果我们使用 base64 加密/解密规则,这就是它的样子......

export function localStorageSyncReducer(reducer: ActionReducer<any>): ActionReducer<any> {
  return localStorageSync({
    keys: [{'product': {
      encrypt: state => btoa(state),
      decrypt: state => atob(state)
    }}]
  })(reducer);
}

btoa(state)atob(state)是内置的 JavaScript 函数。(如我错了请纠正我)。

如果您想设计自己的加密/解密规则,请将btoa(state)和/或atob(state)替换为您自己的函数。

我会推荐这个,因为任何人都可以复制 base64 加密,然后使用任何在线工具轻松解密。

旁注:有人创建了一个拉取请求来放置 ngrx-store-localstorage 的 encrpyt/decrypt 的文档,但作者已经超过 3 个月没有接受它。

如果您想阅读拉取请求,这里是链接... https://github.com/btroncone/ngrx-store-localstorage/pull/137

如果我花了太长时间才弄清楚语法,但我最终得到了它。

祝您愉快。:)


推荐阅读