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

前端项目怎么进行身份认证?

  •  
  •   jiafaner · 2018-09-18 16:45:13 +08:00 · 3251 次点击
    这是一个创建于 2040 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我们现在的前端程序是一个 Vue 的项目,分成两部分,一部分是 Member,另一部分是 Admin

    我们现在的 Admin 的认证是这样弄的:

    一个 SPA 的 VUE 项目,跑在 /admin 这个 url 上面,但无论是 /admin/feature1 还是 /admin/feature2,不管是哪一种 URL 都由后台的 JAVA 程序提前拦截一下 URL,如果没有权限或者没有登录,就跳转到 /login

    登录的时候还是用的 session

    现在做到 Member 部分了,需求里要求 Member 部分要能够在浏览器里面运行,也要能够打包到 Cordova 里面,按架构的设计,是通过一个 token 保护着 API,这里我就有点迷糊了,因为按架构的设计,就没有 Session 了

    Boss 让我做一个包装,所有 ajax 都要带上 Token,如果 Token 没有,就在前端跳转到登录页,登录成功的话服务器返给我一个 Token

    那我把这个 Token 存到哪里呢?存到 Cookie 里面又好像不对

    这种单独的前端项目怎么进行身份认证啊

    7 条回复    2018-10-02 04:47:04 +08:00
    34C
        1
    34C  
       2018-09-18 16:47:20 +08:00   ❤️ 1
    存 sessionStorage 啊,或者 localStorage 然后加有效期字段
    jiafaner
        2
    jiafaner  
    OP
       2018-09-18 16:50:24 +08:00
    @34C 啊,存在这里面能行吗?别人复制走了怎么办

    必须 API 强制用 https 吗
    34C
        3
    34C  
       2018-09-18 16:53:07 +08:00   ❤️ 1
    @jiafaner 传统 web 项目也可以把 cookies 复制走啊,所以会话凭据(无论叫 session 还是叫 token )都是有有效期的
    34C
        4
    34C  
       2018-09-18 16:53:26 +08:00
    @jiafaner 和 https 没什么关系
    jiafaner
        5
    jiafaner  
    OP
       2018-09-18 16:58:11 +08:00
    @34C 明白了,我再搜索一下这些资料,感谢了
    xuanbg
        6
    xuanbg  
       2018-09-22 22:59:10 +08:00
    身份认证其实是后端的事情,只要它给用户在登录后发一个 token 就行了。你前端拿到 token 当然是存起来,本地存储或者 cookie 都可以。你作为前端不需要担心别人复制走冒用你的身份,后端是可以做到 token 只能给你用,别人拿走用不了的,当然这也需要你配合给点数据才可以。
    YaphetYin
        7
    YaphetYin  
       2018-10-02 04:47:04 +08:00 via iPhone
    Cookie 加 Httponly,业界标准做法
    存 localstorage 或者 sessionstorage 都可能被加载的 js 取走泄露
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3002 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 11:08 · PVG 19:08 · LAX 04:08 · JFK 07:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.