javascript - 谁能帮我如何使用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];
解决方案
这是直接在导出函数上添加加密和解密的语法...
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
如果我花了太长时间才弄清楚语法,但我最终得到了它。
祝您愉快。:)
推荐阅读
- angular - Angular 9 - 如何将文本数据数组从父组件传递到多层子组件?
- javascript - React JS,webpack 配置不正确以加载 mp3 播放器
- javascript - 如何创建具有自定义时间速度的计时器/秒表
- c# - CSS 文件更新不适用于 ASP .NET CORE
- python - 将二元选择转换为距离矩阵
- angular - 我想使用 Angular 更改 Laravel 的 api 的路由
- gremlin - 两个属性值的唯一组合
- javascript - 我的基本问题是如何访问对象列表中单个对象的属性或方法?
- reactjs - Reactjs - 加载页面时发出获取请求
- asp.net-core - 如何在 ASP NET Core 中执行完全异步操作