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

请问 spa 的应用,后端是 rest 的 api,这样的情况下, token 只存于内存中吗? cookie 还有用吗?

  •  
  •   xjdata · 2016-10-24 03:12:07 +08:00 · 2546 次点击
    这是一个创建于 2227 天前的主题,其中的信息可能已经有所发展或是发生改变。

    react 的 spa ,登陆后 api 返回 token 我将 token 存入 state 中。在需要验证身份的时候读取发送。

    1. 是否可行?
    2. 这样的话是不是就不用 cookie 来存储 token 了?
    3. 如果可以我是否可以把 id , name 等用户信息也抛开 cookie 呢?
    4. 上述想法有什么错误之处?

    谢谢。

    3 条回复    2016-10-25 00:34:25 +08:00
    mapleray
        1
    mapleray  
       2016-10-24 11:44:03 +08:00   ❤️ 1
    1. 可行
    2. 可以不用, cookie 存只是一种方式,你也可以考虑其他方式,只要你能拿到 token,然后请求时带上就行
    3. 理论上也是可以的
    4. 没什么错误,你说的方式能实现 rest api 的请求

    你可以看看 jwt ,把验证放在 header 里面
    pumpkin
        2
    pumpkin  
       2016-10-24 17:23:59 +08:00   ❤️ 1
    有错误,如果放在 state 中,就相当于放在内存中,页面销毁后就没了,导致每次打开你都得重新获取 token 。如果不用 cookie 的话,可以把 token 存在 localStorage 中,每次页面建立之前(可以看看各大框架的生命周期),尝试由 localStorage 中获取 token ,然后拿到后端验证,如果过期了就重新登录获取 token ,然后把 token 放到内存以及 localStorage 中。如果内存中存在 token 就直接在内存中带上 token 进行身份验证(就是用户主页面一直没有关闭的时候),过期了再按上面走一遍。
    xjdata
        3
    xjdata  
    OP
       2016-10-25 00:34:25 +08:00
    多谢各位。

    知道这些是可行的 但是每个环境不同 可能最后还是要根据实际需求实际应用了。
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3057 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 15:06 · PVG 23:06 · LAX 07:06 · JFK 10:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.