跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 关于浏览器登录状态的保存
未分類
2020 年 5 月 16 日

关于浏览器登录状态的保存

关于浏览器登录状态的保存

資深大佬 : zxc1234 7

面试被问到相关-没答好,挂了

问:浏览器是怎么保持登录状态的,就是你登录一次后过段时间不用再登录

答:登录的时候,用户输入用户名密码,会走到公司的统一验证中心 portal,验证成功,会返回一个 token,

用户每次请求或者刷新网页的时候会携带这个 token,然后走到 portal 验证中心,只要 token 没过期,用户就不用重

新登录。

大佬们能帮我看看我哪里答错了,或者怎么答比较好,多谢!

大佬有話說 (10)

  • 資深大佬 : yuzo555

    他是问浏览器,不是问你服务端实现机制。
    浏览器就是对 Cookie 的处理呗

  • 主 資深大佬 : zxc1234

    @yuzo555 cookie ?不是 token 吗? token,cookie,session 我搞晕了

  • 資深大佬 : superrichman

    token 存在 cookie 里,随请求一起传输

  • 資深大佬 : vzyw

    session 是后端的概念,session 本质目的就是后端需要区分出每次请求是哪个用户产生的。用 token 的情况下,就是找到这个 token 对应的用户,用 cookie 就是找到这个 cookie 对应的用户,token 、cookie 本质都是一串字符串,一般做法是后端在 redis 里存每个 tokensession 对应的 user_id

    前后端分离的情况下,token 一般是前端存在 localstorage 中 ,在进行 xhr 请求时放在 herder 的一个字段里面,一般是 authorization 字段

    非分离的情况下一般用 cookie,这时也基本上没有 xhr 类型的请求,也没有跨域请求,所以 cookie 会随着 get 或者 post 一同提交到后端

    跨域请求 /xhr 类型请求也可以设置 cookie 并且可以自动带上 cookie,具体内容要查一下文档,忘记了

  • 資深大佬 : also24

    关于浏览器登录状态的保存 又到了搬出这篇文章的时候了

    https://www.v2ex.com/t/656457

  • 資深大佬 : darknoll

    应该是回答 cookie 或者 localstorage 这些

  • 資深大佬 : also24

    不管是纯粹的 token 机制,亦或者各类 Session 机制,其本身的目的都是为了对用户进行识别或鉴权。
    那么核心关注点就三个部分:
    – 用什么东西、什么方式来进行识别鉴权
    – 用来识别鉴权的这个东西,存储在客户端什么位置
    – 客户端如何将这个东西发送给服务端

    以下,是各种不同机制中,用来识别鉴权所用的 [凭据] :
    Token (也包括 JWT 等特定协议)
    Session-ID ( Server Side Session )
    Session-Data ( Client Side Session )
    等

    以下,是可以用来存储上述凭据的介质:
    Cookie
    localStorage / sessionStorage
    URL / HTML
    等

    以下,是用来发送上述凭据的机制:
    Cookie 自动携带(这是 Cookie 特殊的一点,既是存储容器,也是发送机制)
    自己在 Ajax 请求中加 Header 或加其它字段
    直接加在 Request URL 或 Form 上
    等

  • 資深大佬 : jsisjs20130824

    1.cookie 呢,就是返回头有个 set-cookie,让浏览器保存 cookie,cookie 是保存在浏览器
    2.session 呢是浏览器和服务端都保存,服务端给一个 sessionid 存 cookie,下次请求带上这个 cookie,服务端拿着 sessionid 去数据库或者缓存区查,这种 session 方案是依赖于 cookie
    3.token 就是存在浏览器的 localstorage,下次请求带上这个 token,服务端再去存储中找 token 确定用户
    4.还有一种 token,叫 jwt,和 cookie 很像,也是存浏览器,比如 localstorage,但是存浏览器的话,服务端就没办法把他 revoke 掉,也就取消,没办法退出登录
    此外还有 sessionstorage,VUE 还有个 vuex 状态存储
    然依赖 cookie 的 session 方案不好解决跨域的问题,比如你的 cookie 是设置在这个域下面的,那请求另外一个域,不会带上这个 cookie,或者你要用 js 去操作这个域(开始胡说八道),那你的 cookie 就不能是 http only
    然后 sessionstorage 我还不会,你去百度一下,然后告诉我,阿里嘎多

  • 資深大佬 : xuanbg

    4 正解,比较合理的做法是存 localstorage,毕竟 cookie 是每次请求都会带着走的,一来浪费流量,二来会暴露在网络上,没有存本地安全。

  • 資深大佬 : also24

    另外需要注意的是,非常非常多的关于 Session 的文章都会出现以下误解:
    1 、将 Server Side Session 当成了 Session 机制的全部,误以为 Session Data 一定存储在服务端。
    2 、将 Cookie 当成了 Session-ID 的唯一存储位置,误以为 Session 机制和 Cookie 是绑定关系。
    3 、将 JWT 当成了 Client Side Session 的唯一实现,误以为 JWT 和 Session 机制互为对手关系。

    // 当然,很多面试官自己其实也存在这样的误解。只是为了面试的话,倒也是没太大所谓。
    // and 其实这里已经好几个朋友出现相应的误解了。

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具