后端已经写好了 API ,例如删除 id 为 1 的订单: DELETE /order/1
这个 API 是需要 authentication 的,如果用 curl 的话,大致如:curl -u username:password -X DELETE /order/1
。然后后端会验证该订单是否由认证用户创建,如果是,则可以删除。
现在前端页面发起一个 AJAX 请求,可是我不知道该如何进行验证。显然不能把用户名和密码带上吧,而且前端页面也没有用户名和密码啊... 这种情况的 best pratice 是什么?(后端是 Flask)
1
frozenshadow 2015-12-02 14:59:25 +08:00
请求的话,不是有 session 么?
|
2
ryanking8215 2015-12-02 15:13:30 +08:00
curl -u username:password -X DELETE /order/1
默认使用 basic authentication. 请求头里造个头就好了 |
3
FrankFang128 2015-12-02 15:19:15 +08:00
setHeaders?
|
4
domty 2015-12-02 15:23:38 +08:00
jquery+ajax 不是 b/s 架构吗?
b/s 架构有 cookie 和 session 哪,认证的时候查 session 登录状态不就行了吗 |
5
unknownservice 2015-12-02 15:25:25 +08:00
鉴权不是后端考虑的事吗,有 session 还不够?
|
6
Pastsong 2015-12-02 15:28:11 +08:00
之前也想过这个问题,似乎用加 token 的方式也可以
|
7
demo 2015-12-02 15:29:50 +08:00
请不要单独的使用前端进行权限验证
|
8
500miles 2015-12-02 15:32:46 +08:00
你不用管 直接发起 ajax 请求就可以了..
请求会自动带上 cookie 信息. 锅就顺利到了后端 = = , |
9
996635 2015-12-02 15:34:29 +08:00
JWT
|
10
sarices 2015-12-02 15:36:08 +08:00
直接请求的话,先登录再发起就可以啦,有 session 做验证
|
11
sarices 2015-12-02 15:37:01 +08:00
每次带账号密码请求比较麻烦,每次都要数据库比对账号密码是否正确,加重后端压力
|
12
CosWind 2015-12-02 15:44:36 +08:00
楼上好多的貌似理解错了,后端设计 api 的规范是遵循 restful 的,认证使用了 Basic Authorization
http://stackoverflow.com/questions/5507234/how-to-use-basic-auth-and-jquery-and-ajax |
13
haozhang 2015-12-02 15:46:21 +08:00
session 验证啊, ajax 发起的 http 请求会把 cookie 带上的。
|
14
daysv 2015-12-02 15:49:26 +08:00
JWT 比较好
|
15
codeyung 2015-12-02 15:55:39 +08:00
不要前端验证 服务器有 session 和 token 都可以搞
|
16
CosWind 2015-12-02 15:57:49 +08:00
仔细想想,不对呀, bs 的采用这种方式,难道是内部系统;好像就只看到三方平台会这么设计接口
|
17
ccbikai 2015-12-02 15:58:38 +08:00
这个认证是靠 header 的 Authorization 字段完成的.
|
18
ccbikai 2015-12-02 16:00:40 +08:00
所以往 header 加 Authorization 字段, 值是 Basic base64(username:password).
base64(username:password) 是个函数,你应该看的懂 jQuery.ajax 怎么添加 header ,自己看下文档 |
19
ccbikai 2015-12-02 16:04:46 +08:00
$.ajax({
username: 'zhang', password: 'san' }); jQuery 竟然支持直接传 http 认证方法 ---- 看了下楼主需要 best pratice , 现在 http basic 认证肯定不行,换认证方式吧 |
20
xujif 2015-12-02 16:06:49 +08:00
如果是纯 restful 接口,在 bs 里使用时,建议增加一层,校验 session 。另造一个轮子 token 放在前端维护实在不是一个好主意,除非你的页面是 mvvm 纯前端。
|
21
BOYPT 2015-12-02 16:07:11 +08:00
best pratice 么,无非就是客户端先申请一个 token ,每次请求都带上个 token ……
简单来说那些什么 oauth 都是这样的,作为不信任的第三方存在的时候都得这样 |
22
changqingshuya 2015-12-03 08:43:22 +08:00 via iPhone
basic authentication+1
|