我是使用服务器脚本的新手,我相信这是一个非常简单的答案,但我还没有找到我想要的东西。我正在使用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号并在脚本中使用它?我希望我的问题很明确,非常感谢任何帮助!
答案 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/。