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

问前端,你们单页应用时,用户登录鉴权一般是怎么做的?

  •  
  •   zjsxwc ·
    zjsxwc · 2018-03-19 20:10:43 +08:00 · 6534 次点击
    这是一个创建于 2432 天前的主题,其中的信息可能已经有所发展或是发生改变。

    作为后端我用不用提供一个专门的接口来判断用户是否登录?还是只需要每次请求接口时发现没登录就返回个特定 code 就行?

    16 条回复    2018-03-20 11:03:16 +08:00
    feverzsj
        1
    feverzsj  
       2018-03-19 20:14:00 +08:00
    任何需要授权的接口,后端都需要检查授权,如果没授权就返回错误代码,前端再自行处理
    per
        2
    per  
       2018-03-19 20:14:23 +08:00 via iPhone
    带 token,没登录返回 401 就行
    duan602728596
        3
    duan602728596  
       2018-03-19 20:32:09 +08:00
    登录接口返回 token,headers 带 token 验证,没有 token,返回 401。
    注意,注册和找回密码这种接口就不要带 token 了,要不然前端会问候你 10000 次的,真的。
    zhixiao
        4
    zhixiao  
       2018-03-19 20:33:39 +08:00
    不需要的
    undercloud
        5
    undercloud  
       2018-03-19 20:39:37 +08:00
    每个请求都要验证,否则用专门接口的话,岂不是将验证逻辑交给了前端 JS 了吗,那用户就能随便绕过你的系统登陆验证了
    zjsxwc
        6
    zjsxwc  
    OP
       2018-03-19 20:41:06 +08:00
    @duan602728596

    和手机 api 一样啊, 我应该可以直接把手机 App 的那套接口给前端写单页应用吧。

    还有个问题,你们部署单页应用时,后端是不是只需要给 1 个与 api 接口同域名的特定的 url 地址,然后这个地址返回的 html 里加载单页 js 文件就好了?不需要后端再提供别的 url 地址了吧?

    你们是怎么发布新版本的?
    crab
        7
    crab  
       2018-03-19 20:45:12 +08:00
    JWT?
    duan602728596
        8
    duan602728596  
       2018-03-19 21:27:08 +08:00 via iPhone
    @zjsxwc app 的接口是可以用的。url 地址不需要相同,做好跨域处理就好了。部署版本也是各部署各的,互相没有影响。
    cevincheung
        9
    cevincheung  
       2018-03-19 21:31:18 +08:00
    js 中如何多个数据模型继承一个公共的,然后无论哪个 model 执行 request 都会先执行 precheck 过了以后再进行调用 callback。 -_- 或者说应该换个思路?
    RorschachZZZ
        10
    RorschachZZZ  
       2018-03-19 21:54:19 +08:00
    登录分配 token-》前端每次请求携带 token-》后台验证 token (没有或非系统发出的 返回 401 )
    ivydom
        11
    ivydom  
       2018-03-19 22:12:51 +08:00
    推荐用 authing.cn
    badcode
        12
    badcode  
       2018-03-20 08:30:29 +08:00 via iPhone
    @ivydom 你到处推呀,
    在想要不要 @管理员!?
    因为
    一来没说明为什么要用你那个?
    二来这样给链接也不利于别人访问!?
    sunzongzheng
        13
    sunzongzheng  
       2018-03-20 08:42:47 +08:00 via Android
    jwt
    zhwithsweet
        14
    zhwithsweet  
       2018-03-20 09:15:41 +08:00
    拦截每一次请求,加 token 即可
    exonuclease
        15
    exonuclease  
       2018-03-20 09:48:40 +08:00 via iPhone
    检查 token 啊
    jy02534655
        16
    jy02534655  
       2018-03-20 11:03:16 +08:00
    服务端验证权限,这个和是不是单页应用没有关系的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1042 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 22:10 · PVG 06:10 · LAX 14:10 · JFK 17:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.