V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
ruandao
V2EX  ›  问与答

唯一性登录要怎么设计比较合适

  •  
  •   ruandao · 2019-01-21 21:49:03 +08:00 · 2938 次点击
    这是一个创建于 2126 天前的主题,其中的信息可能已经有所发展或是发生改变。

    谢谢

    主要,要考虑,如果程序,僵死怎么办(当然出现这个问题的时候,会重新设计,但是要预防出现这个问题)

    现在想象中的有 利用 redis 的 set key value EX 10 NX 这样的方案

    哪些书,有系统的讲解\考虑到这类问题(嗯,书看的少,要多花时间在上面)...谢谢

    目前考虑,是 分配 token 的节点, 先发布踢人广播, 然后等待 n 秒后,在抢锁,进行更换 token 操作

    19 条回复    2019-01-22 13:46:31 +08:00
    puritania
        1
    puritania  
       2019-01-22 00:10:18 +08:00 via iPhone
    每次登陆生成一个 token 啊 旧的 token 就不能用了
    singer
        2
    singer  
       2019-01-22 00:44:32 +08:00 via Android
    jwt
    casparchen
        3
    casparchen  
       2019-01-22 03:01:51 +08:00 via iPhone   ❤️ 8
    楼主是外国人?建议学习一下中文的标点符号和断句的规则
    whileFalse
        4
    whileFalse  
       2019-01-22 06:34:25 +08:00
    一个简单的办法( web ):用户成功登录时,把用户当前 session 对应的 redis key id 做一个映射:
    redis set 'user_session:' + user_id session_key_id
    再次登录时,查看当前 userid 在 redis 中是否存在。如果在的话删掉对应的条目。
    yidinghe
        5
    yidinghe  
       2019-01-22 08:05:14 +08:00 via Android   ❤️ 4
    唯,一性登录,只要让后,来者把前面,的人踢掉就行了。
    MineDog
        6
    MineDog  
       2019-01-22 08:08:56 +08:00 via Android
    单点踢人吗?
    jinhan13789991
        7
    jinhan13789991  
       2019-01-22 08:20:35 +08:00 via Android
    我以为你要做一个产品,叫《唯一,性》
    gimp
        8
    gimp  
       2019-01-22 08:37:33 +08:00
    5 楼介,绍的方式,我觉得 /可以
    HiJackXD
        9
    HiJackXD  
       2019-01-22 08:37:51 +08:00 via iPhone
    单一踢人简单 不踢人的话考虑 socket
    ruandao
        10
    ruandao  
    OP
       2019-01-22 08:50:39 +08:00


    我做了张图, 大家看看

    @yidinghe 主要是,被顶掉的号,需要考虑数据保存
    ruandao
        11
    ruandao  
    OP
       2019-01-22 09:11:12 +08:00
    修改了下
    ruandao
        12
    ruandao  
    OP
       2019-01-22 09:21:22 +08:00
    ruandao
        13
    ruandao  
    OP
       2019-01-22 09:23:17 +08:00
    chinvo
        14
    chinvo  
       2019-01-22 10:25:36 +08:00
    都顶掉了还保存啥数据(

    不如做锁,不登出或者登录状态没超时就不许新登录
    yidinghe
        15
    yidinghe  
       2019-01-22 10:58:53 +08:00
    你要保存那也是额外的操作了,跟唯一性登录本身无关。比如用户 A 已经登录了 session a1,这时候 session a2 也以用户 A 身份登录,那么将 session a1 踢出的同时保存 session 当中相关信息即可,并不复杂。
    Deville
        16
    Deville  
       2019-01-22 11:42:07 +08:00   ❤️ 2
    唯一,性登录,有两种方式,吧一种是保持唯一 IP 除非,下线否则相同账号无法,再次登录另一,个就是一直。/踢踢踢那请,求头带个 token 就好,了嘛~
    Geraltt
        17
    Geraltt  
       2019-01-22 12:10:41 +08:00 via iPhone
    @Deville 老铁深得楼主精髓
    ruandao
        18
    ruandao  
    OP
       2019-01-22 13:45:51 +08:00
    @chinvo #14  顶掉之前,需要把数据先保存。。。游戏服务器。。。游戏服务器,定时保存的
    ruandao
        19
    ruandao  
    OP
       2019-01-22 13:46:31 +08:00
    @chinvo #14 目前图上,就是用锁。。。就是感觉,不够优雅
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2011 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 16:17 · PVG 00:17 · LAX 08:17 · JFK 11:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.