• 请不要在回答技术问题时复制粘贴 AI 生成的内容
cococoder
V2EX  ›  程序员

前端用 localstorage 保存部分数据用于数据回显,当用户切换账号时会出现数据串号的情况,如何解决?

  •  
  •   cococoder · Oct 11, 2019 · 6988 views
    This topic created in 2580 days ago, the information mentioned may be changed or developed.

    如题,当然出现这个问题是当初设计的问题,没有做唯一标识识别,解决串号简单,但是该如何兼容老数据是个问题,如何保证上线后,不影响之前用户已经缓存在本地的数据

    Supplement 1  ·  Oct 12, 2019
    看到很多人说直接清除,但是这样会丢失老数据,影响用户体验,如果人家换号了,直接清除还行,没有换号,结果数据丢了就很奇怪了,比较蛋疼
    29 replies  •  2019-10-12 16:20:02 +08:00
    fengxianqi
    fengxianqi
    Oct 11, 2019 via Android
    1
    让旧数据全部失效
    murmur
    murmur
    Oct 11, 2019
    2
    注销的时候不清除数据么?或者用 cookies,
    ayase252
    ayase252
    Oct 11, 2019
    3
    注销清空所有保存的状态
    lneoi
    lneoi
    Oct 11, 2019
    4
    退出时清空,或者登陆存数据时清空旧数据,也可以增加一个字段做用户识别,看你具体数据情况
    lukunlin
    lukunlin
    Oct 11, 2019❤️1
    5
    串号明显是你的业务代码有问题.
    建议做给导图理清楚自己的登录系统的逻辑.
    毕竟用 localStorage 存 token 也好还是其他,那么多人用都没什么问题
    liuy1994g
    liuy1994g
    Oct 12, 2019 via Android
    6
    你们什么数据这么重要还存本地,直接作废不就行了
    keelii
    keelii
    Oct 12, 2019
    7
    用 ls 有个基本的逻辑,如果缓存的数据是没有个体差异的那就随便存,如果有那就要在缓存中添加必要的字段来区分数据。不过你得考虑到 ls 有大小限制,并不能让你当数据库使用。
    reus
    reus
    Oct 12, 2019
    8
    写代码把老数据迁移就行了
    迁移完就删除
    yuang
    yuang
    Oct 12, 2019 via Android
    9
    d2-admin 的做法是使用版本号和用户 id 作为标识,项目更新后之前的缓存自动失效
    hanxiV2EX
    hanxiV2EX
    Oct 12, 2019 via Android
    10
    区分用户数据和设备数据,谁生产的垃圾谁收拾。
    IsaacYoung
    IsaacYoung
    Oct 12, 2019
    11
    localStorage.setItem(`${userId: ${key}}`, value)
    ashong
    ashong
    Oct 12, 2019 via iPhone
    12
    查看有没有某个新数据,没有就全部读取写为新格式
    ccyu220
    ccyu220
    Oct 12, 2019
    13
    我们系统用 customer id 来做标识符
    xuanbg
    xuanbg
    Oct 12, 2019
    14
    数据要长久保存的话,加上用户 ID 作标识,取的时候用用户 ID 作条件查询即可。不需要长久保存的话,注销的时候清理掉就可以了。
    sannyzeng
    sannyzeng
    Oct 12, 2019
    15
    先检测一下哪些数据是属于会产生串号的数据,打开的时候直接清除。
    后续的新数据都加上用户标识,就可以过渡了
    fishbone0
    fishbone0
    Oct 12, 2019
    16
    给缓存附带用户唯一标识,串号是你业务代码有问题
    kang77649119
    kang77649119
    Oct 12, 2019
    17
    根据用户 id 存数据, 取数据的时候根据用户 id 取,串号问题解决,老数据也不用清除
    sjfkai
    sjfkai
    Oct 12, 2019
    18
    老数据可以在用户访问的时候整体刷一遍,带上用户标识。这样不就可以兼容老数据了…
    lands
    lands
    Oct 12, 2019
    19
    存的时候, key 带上用户标识
    cococoder
    cococoder
    OP
    Oct 12, 2019
    20
    @kang77649119 但是过渡阶段,用户已经缓存在本地的老数据虽然不用清除,但也没用上了
    cococoder
    cococoder
    OP
    Oct 12, 2019
    21
    @sjfkai 刷数据的时候会不会把另一个账号的老数据刷到另一个账号的下面?
    kang77649119
    kang77649119
    Oct 12, 2019
    22
    @cococoder 那就需要看看老数据中是否有数据来区分是属于哪个用户了,如果不属于当前用户就不要使用,属于当前用户就以当前用户为 key,再存一次。
    cococoder
    cococoder
    OP
    Oct 12, 2019
    23
    @kang77649119 hhh 又绕回来了....如果能区分属于哪个用户的,那就不会出现串号的情况了
    KuroNekoFan
    KuroNekoFan
    Oct 12, 2019
    24
    要么就是特定用户 id 对应特定信息,要么就是切换用户的时候清空信息
    cococoder
    cococoder
    OP
    Oct 12, 2019
    25
    @fengxianqi 简单粗暴
    Ixizi
    Ixizi
    Oct 12, 2019
    26
    默认用老数据 切换用户的时候把老数据清了 切完了存带标识的数据
    MiBAO
    MiBAO
    Oct 12, 2019
    27
    这种明显应该是要清除的吧 ,感觉信息尽量不要留着用了就销毁掉 , 退出的时候记得清一些没有清的
    rioshikelong121
    rioshikelong121
    Oct 12, 2019
    28
    自己封装一下 localStorage. 我们项目就是这么干的。

    ls 只存非敏感的用户信息。并且对于特殊字段加密存储。

    当时这么做的目的是: 因为有好几个网站共用了一个域名,所以封装了一下 localStorage. 在存储的时候自动添加站点前缀做隔离。
    cococoder
    cococoder
    OP
    Oct 12, 2019
    29
    @rioshikelong121 嗯,是自己封装的 ls,要是最开始前缀用的是用户标识就不会有串号的问题了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1751 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 63ms · UTC 17:28 · PVG 01:28 · LAX 09:28 · JFK 12:28
    ♥ Do have faith in what you're doing.