推荐学习书目
› Learn Python the Hard Way
Python Sites
› PyPI - Python Package Index
› http://diveintopython.org/toc/index.html
› Pocoo
值得关注的项目
› PyPy
› Celery
› Jinja2
› Read the Docs
› gevent
› pyenv
› virtualenv
› Stackless Python
› Beautiful Soup
› 结巴中文分词
› Green Unicorn
› Sentry
› Shovel
› Pyflakes
› pytest
Python 编程
› pep8 Checker
Styles
› PEP 8
› Google Python Style Guide
› Code Style from The Hitchhiker's Guide
yhf
V2EX  ›  Python

jQuery 发起 AJAX 请求如何进行 Authentication

  •  
  •   yhf · Dec 2, 2015 · 4588 views
    This topic created in 3998 days ago, the information mentioned may be changed or developed.

    后端已经写好了 API ,例如删除 id 为 1 的订单: DELETE /order/1

    这个 API 是需要 authentication 的,如果用 curl 的话,大致如:curl -u username:password -X DELETE /order/1 。然后后端会验证该订单是否由认证用户创建,如果是,则可以删除。

    现在前端页面发起一个 AJAX 请求,可是我不知道该如何进行验证。显然不能把用户名和密码带上吧,而且前端页面也没有用户名和密码啊... 这种情况的 best pratice 是什么?(后端是 Flask)

    22 replies  •  2015-12-03 08:43:22 +08:00
    frozenshadow
    frozenshadow
    Dec 2, 2015
    1
    请求的话,不是有 session 么?
    ryanking8215
    ryanking8215
    Dec 2, 2015
    2
    curl -u username:password -X DELETE /order/1
    默认使用 basic authentication.

    请求头里造个头就好了
    FrankFang128
    FrankFang128
    Dec 2, 2015
    3
    setHeaders?
    domty
    domty
    Dec 2, 2015
    4
    jquery+ajax 不是 b/s 架构吗?
    b/s 架构有 cookie 和 session 哪,认证的时候查 session 登录状态不就行了吗
    unknownservice
    unknownservice
    Dec 2, 2015
    5
    鉴权不是后端考虑的事吗,有 session 还不够?
    Pastsong
    Pastsong
    Dec 2, 2015
    6
    之前也想过这个问题,似乎用加 token 的方式也可以
    demo
    demo
    Dec 2, 2015
    7
    请不要单独的使用前端进行权限验证
    500miles
    500miles
    Dec 2, 2015
    8
    你不用管 直接发起 ajax 请求就可以了..

    请求会自动带上 cookie 信息.

    锅就顺利到了后端 = = ,
    996635
    996635
    Dec 2, 2015
    9
    JWT
    sarices
    sarices
    Dec 2, 2015
    10
    直接请求的话,先登录再发起就可以啦,有 session 做验证
    sarices
    sarices
    Dec 2, 2015
    11
    每次带账号密码请求比较麻烦,每次都要数据库比对账号密码是否正确,加重后端压力
    CosWind
    CosWind
    Dec 2, 2015
    12
    楼上好多的貌似理解错了,后端设计 api 的规范是遵循 restful 的,认证使用了 Basic Authorization
    http://stackoverflow.com/questions/5507234/how-to-use-basic-auth-and-jquery-and-ajax
    haozhang
    haozhang
    Dec 2, 2015
    13
    session 验证啊, ajax 发起的 http 请求会把 cookie 带上的。
    daysv
    daysv
    Dec 2, 2015
    14
    JWT 比较好
    codeyung
    codeyung
    Dec 2, 2015
    15
    不要前端验证 服务器有 session 和 token 都可以搞
    CosWind
    CosWind
    Dec 2, 2015
    16
    仔细想想,不对呀, bs 的采用这种方式,难道是内部系统;好像就只看到三方平台会这么设计接口
    messagebus
    messagebus
    Dec 2, 2015
    17
    这个认证是靠 header 的 Authorization 字段完成的.
    messagebus
    messagebus
    Dec 2, 2015
    18
    所以往 header 加 Authorization 字段, 值是 Basic base64(username:password).

    base64(username:password) 是个函数,你应该看的懂

    jQuery.ajax 怎么添加 header ,自己看下文档
    messagebus
    messagebus
    Dec 2, 2015
    19
    $.ajax({
    username: 'zhang',
    password: 'san'
    });

    jQuery 竟然支持直接传 http 认证方法



    ----

    看了下楼主需要 best pratice , 现在 http basic 认证肯定不行,换认证方式吧
    xujif
    xujif
    Dec 2, 2015
    20
    如果是纯 restful 接口,在 bs 里使用时,建议增加一层,校验 session 。另造一个轮子 token 放在前端维护实在不是一个好主意,除非你的页面是 mvvm 纯前端。
    BOYPT
    BOYPT
    Dec 2, 2015
    21
    best pratice 么,无非就是客户端先申请一个 token ,每次请求都带上个 token ……
    简单来说那些什么 oauth 都是这样的,作为不信任的第三方存在的时候都得这样
    changqingshuya
    changqingshuya
    Dec 3, 2015 via iPhone
    22
    basic authentication+1
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2562 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 50ms · UTC 12:03 · PVG 20:03 · LAX 04:03 · JFK 07:03
    ♥ Do have faith in what you're doing.