Azure移动服务的自定义API中的多个路由的权限

时间:2014-12-29 08:54:06

标签: api azure azure-mobile-services

我在Azure Mobile Service工作,在那里我制作了自定义API。对于那些可以设置权限(如公共,应用程序,用户和管理员),这是非常有用的。但我需要多级api(例如/api/user/profile/{userId}),并且能够为子级api设置一些权限。

我发现可以使用以下代码添加其他级别的api路径

exports.register = function (api) {

    /* Get public user profile on some other user */
    api.get('/profile/:userId', getProfileFunc);

    /* Get private profile only for the authenticated user */
    api.get('/profile', getProvateProfileFunc);

    /* Update provate profile only for the authenticated user */
    api.put('/profile', updateProfileFunc);
}

exports.get = getUserListFunc;

api权限是通过顶级的{api-name} .json文件设置的。 但是如何设置与父api不同的子级别api 的权限?举例说明:
GET:api / user获取用户列表并且是权限 application
GET:api / user / profile获取(经过身份验证的)用户的配置文件,因此需要权限 user

user.json 中的权限是

{
  "routes": {
    "*": {
      "get": {"permission": "application"},
      "post": {"permission": "admin"},
      "put": {"permission": "admin"},
      "patch": {"permission": "admin"},
      "delete": {"permission": "admin"}
    }
  }
}

我正在使用连接到我的WAMS的git存储库。

1 个答案:

答案 0 :(得分:2)

.json文件支持路由。请尝试以下方法:

{
    "routes": {          
        "/" : { "permission": "public" },
        "/user/profile/:userId" : {
            "get": { "permission": "public" },
            "post": { "permission": "authenticated" }
        }
    }
}