大发龙虎首页    注册   登录
大发龙虎 = way to explore
大发龙虎 是一个大发龙虎关于 分享和探索的地方
现在注册
已注册用户请  登录
大发龙虎  ›  程序员

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

  •  
  •   cococoder · 10 天前 · 2215 次点击

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

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

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

    当时这么做的目的是: 因为有好几个网站共用了一个域名,所以封装了一下 localStorage. 在存储的时候自动添加站点前缀做隔离。
        29
    cococoder   10 天前
    @rioshikelong121 嗯,是自己封装的 ls,要是最开始前缀用的是用户标识就不会有串号的问题了
    大发龙虎关于   ·   FAQ   ·   API   ·   大发龙虎大发龙虎我 们 的愿景   ·   广告投放   ·   感谢   ·   实用小大发龙虎工具   ·   2759 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 25ms · UTC 12:00 · PVG 20:00 · LAX 05:00 · JFK 08:00
    ♥ Do have faith in what you're doing.