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

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

  •  
  •   cococoder · 40 天前 · 2365 次点击
    这是一个创建于 40 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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