Azure移动服务脚本

时间:2016-07-20 20:31:29

标签: javascript azure azure-mobile-services

我是使用服务器脚本的新手,我相信这是一个非常简单的答案,但我还没有找到我想要的东西。我正在使用azure移动服务来检索和输入用户信息,并希望阻止用户查看其他用户的ID号。

要读取数据,程序会发出以下http请求

"GET http://Servicename.net/tables/TableName?$top=1&$orderby=__createdAt%20desc&$filter=id+eq+'"+id+"' HTTP/1.1"

id由用户当前所在的帐户确定,但我不希望用户能够删除id,发出如下请求并检索整个表以及其他用户id < / p>

 "GET http://Servicename.net/tables/TableName HTTP/1.1"

我想要做的是使用服务器端脚本,特别是读取操作脚本,以确保请求具有与之关联的id,并且仅返回具有该特定id的数据。

我尝试了以下内容:

function read(query, user, request) {
 if(request.parameter.id != null){
request.execute();
    }
}

这不起作用,所以我的问题是如何从http请求中检索id号并在脚本中使用它?我希望我的问题很明确,非常感谢任何帮助!

2 个答案:

答案 0 :(得分:2)

我会将您推荐给我的Azure移动应用系列:https://shellmonger.com/30-days-of-azure-mobile-apps-the-table-of-contents/

特别是,请看第6天 - 个人表。这显示了如何通过经过身份验证的用户ID限制返回给用户的数据。

答案 1 :(得分:0)

如果要在Mobile Service中的表操作中检索用户ID。您可以使用第二个参数user,它始终是user object,代表提交请求的用户。

您可以找到一个代码段来解释https://azure.microsoft.com/en-us/documentation/articles/mobile-services-how-to-use-server-scripts/#table-scripts的用法:

function insert(item, user, request) {
    if (item.userId !== user.userId) {
        request.respond(statusCodes.FORBIDDEN, 
        'You may only insert records with your userId.');
    } else {
        request.execute();
    }
}

有关Node.js中移动服务的详细信息,请参阅Work with a JavaScript backend mobile service

此外,现在我们建议使用移动应用程序而不是移动服务。有关详细信息,请参阅https://azure.microsoft.com/en-us/documentation/articles/app-service-mobile-value-prop-migration-from-mobile-services/