【问题标题】:Angular 5/6 project session storageAngular 5/6 项目会话存储
【发布时间】:2018-06-09 11:41:52
【问题描述】:

最近我正在考虑如何像在传统的 asp.net 项目中使用会话一样维护会话对象,因为这将是一些信息 这将通过 web 应用程序不断使用,例如 userId/appId/userRole,我们不想每次使用这些作为输入时都从数据库中检索信息,到目前为止,我发现可能的解决方案是:

1) 将它们放入 html5 本地/会话存储中,但我不确定是否 这对公众是安全的 用户?假设我在会话存储中将 userId 保存为 1,用户会在他的本地浏览器存储中将此值修改为 2,因此当保存某些内容并需要从会话存储中获取 userId 时,它将获取 userId 1 或2?或者用户会去删除会话存储中的密钥/对,这会在尝试查找时导致应用程序出错

2) 将它们作为对象保存到角度服务类中并像全局对象一样使用它,这是个好主意吗?

上述哪种解决方案最适合解决我在 Angular 项目中的问题?还是有人有更聪明的主意?

【问题讨论】:

    标签: angular local-storage angular5 ngrx session-storage


    【解决方案1】:

    我正在开发一个库来做到这一点。

    https://github.com/adriandavidbrand/ngx-rxcache

    RxCache 是一个库,它简化了 Redux 风格存储的推送模型,还支持本地存储以在浏览器刷新时存活。

    【讨论】:

    • 这太棒了,正是我想要的!非常感谢!
    【解决方案2】:

    1) 您可以将其存储在 html 存储中以使其不可读,您可以使用 https://www.npmjs.com/package/ng-lz-string 。这也将压缩所有数据,并且不会让 localStorage 或 sessionStorage 达到其配额。

    2 和 3) 这两个都是使用 html localStorage/sessionStorage 的工具。我只是将 html5 与 lz-string compress decompress 一起使用。

    【讨论】:

    • 非常感谢您分享您的想法!使用 localStorage/sessionStorage 的问题是客户端用户可能会从浏览器获取存储的信息,我不确定这是否是一种安全设计,可以将 userId、userRole 等信息公开给客户端,并且这些信息可能会被修改或黑客攻击安全原因。
    • 那么通过 ng-lz-string 存储的数据到底在哪里?它有期限吗?如果我想在登录后使用 ng-lz-string 存储用户对象数据,然后在任何服务或组件中随时获取它,我该怎么办?
    • 这是一个完全不同的问题,取决于你自己。这只会压缩和解压缩数据。如何做到这一点取决于您。
    • 我明白了,所以“ng-lz-string”不是用于压缩和存储数据,它只是压缩,稍后我们仍然需要将它保存在 html 存储之类的地方,对吗?
    • 是的,先生。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-28
    • 1970-01-01
    • 2019-02-18
    • 2020-11-25
    • 1970-01-01
    • 2018-11-14
    • 1970-01-01
    相关资源
    最近更新 更多