gpt4 book ai didi

node.js - 如何为移动和 AJAX 调用保护 JSON RESTful API?

转载 作者:搜寻专家 更新时间:2023-10-31 22:55:11 25 4
gpt4 key购买 nike

我正在构建一个使用 node.js 和 express.js 构建的 JSON RESTful API,

API 将被客户端 AJAX 调用(来自 Ember.js)和原生 Android 移动应用(标准 HTTP 请求)访问。

我正在研究两件事:

1) 身份验证——如何知道哪个用户正在访问 API,在开发中,我为每个用户使用了一个 API key ,并将其传递到请求 header 中

2) 安全性——如何确保只有真正经过身份验证的用户才能访问私有(private)数据。

API key 对于 native 移动客户端和 AJAX 调用来说都是一个好的策略吗?(用户向 API 发送 user+pass 并接收 API key ,然后用于创建其他请求)

我应该查看 OAUTH(1 或 2)之类的东西吗?我目前没有让第 3 方应用程序访问 API 的计划,因此我不需要授权,但这在未来可能会改变。

这是否意味着我需要拥有自己的 OAUTH 提供商服务器?

最佳答案

您可以使用 express.js session 通过存储在 session 存储中的 session key 进行正常身份验证。为了与非 cookie REST 调用兼容,您可以使用附加字段“mySessionId”,添加到查询或请求正文中。然后修改您的身份验证以检查该额外字段。也许一个例子会更有用:

express :

var server = express.createServer();
server.use(express.cookieParser());
server.use(express.session(sessionInfoObject));
server.get("/path/to/endpoint", function(request, response) {
if(typeof(request.query.mySessionId) != "undefined") {
// authenticate with the session id in mySessionId
// eg: if (getSession(request.query.mySessionId).isAuth) {}
}
else {
// session authentication, use request.session
// eg: if (getSession(request.query.mySessionId).isAuth) {}
}
});

如果您选择走这条路,请确保在对用户进行身份验证时,还会在 session 中添加与用户相关的数据。它会让你的生活更轻松。示例:

if(authenticated) {
request.session.isAuth = true;
request.session.customId = customId;
}

有多种选择,但这是我认为最简单的一种。

关于node.js - 如何为移动和 AJAX 调用保护 JSON RESTful API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13857136/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com