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

技术问题:管理后台怎么实现 免密登录?

  •  
  •   kikione · 2020-11-13 18:38:34 +08:00 · 2697 次点击
    这是一个创建于 1258 天前的主题,其中的信息可能已经有所发展或是发生改变。

    场景是这样: 之前登录过了,打开过页面,然后关闭了整个页面。 再次输入域名,可以不用再次登录,直接进入页面。

            这个是怎么实现的?大佬们给小白赐教一下
    
    18 条回复    2020-11-16 00:51:47 +08:00
    just1
        1
    just1  
       2020-11-13 18:39:36 +08:00
    凭证储存于 localstorage
    wunonglin
        2
    wunonglin  
       2020-11-13 18:44:35 +08:00
    cookie
    czk1997
        3
    czk1997  
       2020-11-13 18:45:31 +08:00 via Android
    这不就是无超时的 cookie 吗。去看看各种登录系统的记住我怎么实现的就好了。
    我以为你说的 passwordless 。。
    kaiki
        4
    kaiki  
       2020-11-13 18:47:55 +08:00
    cookies 就行
    举个简单的例子,登录后,服务器给你生成以下几个 cookie
    uid//你的账号或者你的账号 ID
    key//随机生成的 key
    token//你的 uid 和 key 加盐通过后台算法生成的字符串
    你再次访问,服务器直接验证你的 uid 和你的 key 加盐能不能生成 token,等于服务端帮你完成了一次登录操作
    cmdOptionKana
        5
    cmdOptionKana  
       2020-11-13 19:05:23 +08:00
    cookies 很可能就是你想要的东西。另外,cookies 一般是通过 session 来设置,特别是如果你使用了某种 web 框架的话,你可以在文档里找一下关于 session 的章节。
    systemcall
        6
    systemcall  
       2020-11-13 19:13:31 +08:00 via Android
    不知道浏览器指纹行不行。如果用浏览器指纹的话,清除了 cookies 也没关系
    yanzhiling2001
        7
    yanzhiling2001  
       2020-11-13 19:31:33 +08:00
    session 和 cookie 存活时间设置的够大就行了,cookie 加密强一些避免被欺骗攻击,一星期就差不多了,一星期两星期的,重新登录了客户也不会有感觉
    tikazyq
        8
    tikazyq  
       2020-11-13 19:38:02 +08:00
    不做 token 校验就可以直接访问了
    xuanbg
        9
    xuanbg  
       2020-11-13 19:40:12 +08:00
    localstorage 里面保存登录凭证,可以免密登录到凭证失效。
    localstorage 保存用户名密码,可以永久免密登录。注意密码不要存明文。如果后端要你传的是明文,那就赶紧找下家吧。
    toomlo
        10
    toomlo  
       2020-11-14 08:38:59 +08:00
    @systemcall #6 是指 useragent 吗?如果是的话,那安全性基本没有,收集网上大部分浏览器的 ua 然后批量测试登录系统就可以实现登录了
    Nuttertoo1s
        11
    Nuttertoo1s  
       2020-11-14 09:00:05 +08:00
    @cmdOptionKana 不应该是 session 基于 cookies 设置吗
    cmdOptionKana
        12
    cmdOptionKana  
       2020-11-14 10:05:29 +08:00
    @Nuttertoo1s 一个意思,中文太难了……
    uselessVisitor
        13
    uselessVisitor  
       2020-11-14 19:10:34 +08:00 via Android
    记住我?把验证信息放在 cookie 里就行
    NotFoundEgg
        14
    NotFoundEgg  
       2020-11-14 22:29:39 +08:00
    用 cookie 存 token,每次请求都把 token 带上
    服务端查这个 token 是否存在以及是否过期,如果存在且不过期就返回 token 对应用户的数据
    syozzz
        15
    syozzz  
       2020-11-15 15:20:30 +08:00
    @xuanbg 你用户名密码都存 localstroage 里了, 那明不明文也没啥区别了==
    xuanbg
        16
    xuanbg  
       2020-11-15 17:18:28 +08:00
    @syozzz 存 localstroage 已经是最安全的办法了。不入侵到你的电脑上面拿不走。

    然后,是不是明文不一样啊,你明文的话,泄漏了就内裤都没啦。哈希一下就好多了,至少你拿去别的地方很难有用。至于加密,那就真的没必要了,反正前端的东西不存在保密的可能性。
    systemcall
        17
    systemcall  
       2020-11-16 00:15:03 +08:00 via Android
    @toomlo UA 以外,还有 canvas 指纹、Web RTC 指纹、audio codec 指纹之类的
    可以拿到的数据全都拿下来,但是用户更新了浏览器可能会有变化
    结合 cookies 和 local storage 之类的来识别的话,安全性还是很高的。只是单纯地拿到 cookies 之类的信息应该过不了浏览器指纹吧
    toomlo
        18
    toomlo  
       2020-11-16 00:51:47 +08:00
    @systemcall #17 学习了~~~
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1563 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 17:07 · PVG 01:07 · LAX 10:07 · JFK 13:07
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.