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

一个网站支持一个浏览器上多个用户同时登录,有人处理过这种需求吗?

  •  
  •   darknoll · 2021-01-25 13:20:43 +08:00 · 3601 次点击
    这是一个创建于 1177 天前的主题,其中的信息可能已经有所发展或是发生改变。

    听到这个需求的时候我脑子是懵的,还没想过这个场景,实现起来麻烦吗?

    30 条回复    2021-01-26 09:56:25 +08:00
    temporary
        1
    temporary  
       2021-01-25 13:32:21 +08:00 via iPhone   ❤️ 1
    qq 邮箱好像可以
    kop1989
        2
    kop1989  
       2021-01-25 13:34:13 +08:00
    意思是一个浏览器同时记录多个用户的登录状态?
    那么再次有人使用的时候他怎么知道应该自动登录哪个账户?难道拉出列表来选么?
    totoro52
        3
    totoro52  
       2021-01-25 13:38:20 +08:00
    sessionStorage ?
    linauror
        4
    linauror  
       2021-01-25 13:38:31 +08:00   ❤️ 4
    url 上带 token
    lasuar
        5
    lasuar  
       2021-01-25 13:41:08 +08:00
    小问题, 先把原型画出来。
    CptDoraemon
        6
    CptDoraemon  
       2021-01-25 13:43:44 +08:00
    google 不就这样的吗
    polyang
        7
    polyang  
       2021-01-25 13:48:03 +08:00
    多个用户同时登录?那我请求的时候该带上哪个用户的 token ?
    sazima
        8
    sazima  
       2021-01-25 13:50:43 +08:00   ❤️ 1
    正常需求, 不同路径不同的 token
    galikeoy
        9
    galikeoy  
       2021-01-25 14:00:41 +08:00
    @sazima #8 这个思路可以
    codingguy
        10
    codingguy  
       2021-01-25 14:03:32 +08:00
    @polyang #7 token 按 session 存就好了
    crab
        11
    crab  
       2021-01-25 14:05:28 +08:00
    谷歌就是 /u/1 /u/2 这样
    bagheer
        12
    bagheer  
       2021-01-25 14:06:18 +08:00
    理解成网页上增加个切换用户按钮
    smyle
        13
    smyle  
       2021-01-25 14:14:31 +08:00
    google 就是可以同时登录 N 个账户啊,可以参考它怎么做的
    具体技术细节不懂,但作为普通用户,我可以观察到的是 url 里有一个字段对应当前用户 id,比如你登录了 10 个用户,从 chrome url 里你是可以区分出来的:
    https://drive.google.com/drive/u/5/
    这就表示是 id=5 的那个用户,当然这 id=5 显然是一个本地概念。不过你把这个链接贴到另一个只登录了一个 G 账户的浏览器里也能用,它会自动转为新浏览器中的那个唯一账户
    mebtte
        14
    mebtte  
       2021-01-25 15:40:39 +08:00
    twitter 也可以
    coosir
        15
    coosir  
       2021-01-25 15:46:01 +08:00
    QQ 邮箱也行呀
    x86
        16
    x86  
       2021-01-25 15:48:22 +08:00
    Gmail 那种?
    markgor
        17
    markgor  
       2021-01-25 15:57:17 +08:00
    如我没理解错,
    qq 邮箱和 googl 的不全是吧..
    他们都是记录登录了 A,B,C,D 。但是 active 的只有 1,如果要换号的话才切换,只是免密而已......
    xuanbg
        18
    xuanbg  
       2021-01-25 16:01:25 +08:00
    用 token 的话,你不做限制天然就支持同时登录
    wozhizui
        19
    wozhizui  
       2021-01-25 16:04:11 +08:00
    token 是好的解决方案
    每次验证带着 token 就行了
    myqoo
        20
    myqoo  
       2021-01-25 16:05:48 +08:00
    cookie:

    session=s1,s2,s3
    action_session=s2 (or s1, s3, ...)
    fondD
        21
    fondD  
       2021-01-25 16:05:58 +08:00
    能区分不就是能重复登陆吗
    myqoo
        22
    myqoo  
       2021-01-25 16:06:13 +08:00
    cookie:

    session=s1,s2,s3
    active_session=s2 (or s1, s3, ...)
    clf
        23
    clf  
       2021-01-25 17:01:14 +08:00
    token 如果是 jwt token 的话,往里面塞一个用户 id group 数组就行了
    3wdddd
        24
    3wdddd  
       2021-01-25 17:06:09 +08:00
    localStorage 中存 token 用户组
    url 中存 active user
    wolfie
        25
    wolfie  
       2021-01-25 17:48:30 +08:00
    sessionStorage + 1
    ily433664
        26
    ily433664  
       2021-01-25 18:14:43 +08:00
    两个参数,一个存所有已经登录的用户,一个存当前选择的用户,请求的时候传对应的用户凭证就行了
    lululau
        27
    lululau  
       2021-01-25 18:16:32 +08:00
    Firefox / Chrome 的多个 Profile 啊。。。代码改都不需要改。。。
    qq544230987
        28
    qq544230987  
       2021-01-25 21:37:57 +08:00
    看来大家都没接触过 10 年前的 WAP 呢?
    那些年,我们用大砖块手机,用 wml 标记语言,不用 cookie 。

    那怎么判断用户是否登录呢?**在 url 后面加一个参数 sid**

    每次访问,都把 sid 和用户表中的 sid 字段进行对比~~~~ 相同就登录了,每次登录,都更新用户表里面的 sid 值。
    shenyuzhi
        29
    shenyuzhi  
       2021-01-26 03:44:37 +08:00 via iPhone
    你把 token 当成客户端的标识不就行了
    Kinnice
        30
    Kinnice  
       2021-01-26 09:56:25 +08:00
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   951 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 21:35 · PVG 05:35 · LAX 14:35 · JFK 17:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.