Parse platform 云功能授权与validationHandler

Parse platform 云功能授权与validationHandler,parse-platform,parse-server,Parse Platform,Parse Server,我发现自己打开了几个函数来访问具有无效会话令牌的用户。我能找到的唯一方法是在Parse获取请求并从请求中删除sessionToken之前,使用bodyParser拦截请求 现在,我正在尝试更好地管理所有功能的授权-我的问题是: 如果包含sessionToken,则它必须以任何其他方式有效,我可以放宽这一要求吗?会话令牌验证是使用可以替换的默认validationHandler完成的,还是在其他地方完成的 要控制对云功能的访问,是否有类似ACL角色的功能?云函数的“validationHandle

我发现自己打开了几个函数来访问具有无效会话令牌的用户。我能找到的唯一方法是在Parse获取请求并从请求中删除sessionToken之前,使用bodyParser拦截请求

现在,我正在尝试更好地管理所有功能的授权-我的问题是:

  • 如果包含sessionToken,则它必须以任何其他方式有效,我可以放宽这一要求吗?会话令牌验证是使用可以替换的默认validationHandler完成的,还是在其他地方完成的

  • 要控制对云功能的访问,是否有类似ACL角色的功能?云函数的“validationHandler”是否只接受参数?或者我也可以检查用户对象吗

  • 对。在parse server中,您可以确保会话有效,因为如果您尝试使用无效会话运行任何CRUD操作,您将收到http 403错误,即您的会话无效或已过期。您可以通过更改解析服务器应用程序中的sessionLength属性来控制会话的“长度”。默认为1年

  • 没有对云功能的控制访问,但您可以通过检查请求。user是否未定义来检查登录用户是否触发此功能。云函数只能获取键值对中的参数,这些参数不能是解析对象。如果要发送ParseObject,可以发送parse对象的objectId,然后在云代码中查询以获取完整对象。您始终可以访问request.user中的用户上下文(仅当用户触发云代码时)。如果您仍然想“保护”您的云代码,您可以通过查询角色数据库并检查用户是否包含在其中来检查调用用户是否具有角色

  • 对。在parse server中,您可以确保会话有效,因为如果您尝试使用无效会话运行任何CRUD操作,您将收到http 403错误,即您的会话无效或已过期。您可以通过更改解析服务器应用程序中的sessionLength属性来控制会话的“长度”。默认为1年

  • 没有对云功能的控制访问,但您可以通过检查请求。user是否未定义来检查登录用户是否触发此功能。云函数只能获取键值对中的参数,这些参数不能是解析对象。如果要发送ParseObject,可以发送parse对象的objectId,然后在云代码中查询以获取完整对象。您始终可以访问request.user中的用户上下文(仅当用户触发云代码时)。如果您仍然想“保护”您的云代码,您可以通过查询角色数据库并检查用户是否包含在其中来检查调用用户是否具有角色


  • 谢谢Ran,也许我应该更清楚一点——1)我实际上是在问是否有办法允许无效令牌访问我的云代码功能。我问这个问题的原因是,一些功能是免费的,未经验证的用户可以访问。但是,如果用户的请求中有过时的会话,则会拒绝该用户。我找到的解决方法是在解析服务器接收请求之前拦截请求,并删除传递给这些公共请求的任何会话令牌。只有这样,我才能确保parse将处理请求。但是我希望有更好的方法。2)我需要强制执行一些访问规则——我不只是依靠ACL进行授权。所以我需要另一种授权机制。但是validationHandler只接收参数,而不接收request.user。我需要的是运行通用代码,使每个请求的参数与用户的权限相匹配。因此,我需要类似于validationHandler的东西,只是它也可以访问用户对象。同样,我可能可以通过使用授权检查处理程序函数包装每个函数处理程序来实现这一点,但如果我可以注册授权检查函数,那就更好了。您可以从客户端发送用户对象id,然后在云代码中读取它?我可以做到这一点,但它没有经过身份验证。我必须访问request.user对象,才能从身份验证的角度使其具有任何值。否则,任何人都可以在我的应用程序中创建一个用户,并使用它调用访问其他用户的函数。谢谢Ran,也许我应该更清楚一点——1)我实际上是在问是否有方法允许无效令牌访问我的云代码函数。我问这个问题的原因是,一些功能是免费的,未经验证的用户可以访问。但是,如果用户的请求中有过时的会话,则会拒绝该用户。我找到的解决方法是在解析服务器接收请求之前拦截请求,并删除传递给这些公共请求的任何会话令牌。只有这样,我才能确保parse将处理请求。但是我希望有更好的方法。2)我需要强制执行一些访问规则——我不只是依靠ACL进行授权。所以我需要另一种授权机制。但是validationHandler只接收参数,而不接收request.user。我需要的是运行通用代码,使每个请求的参数与用户的权限相匹配。因此,我需要类似于validationHandler的东西,只是它也可以访问用户对象。同样,我可能可以通过使用授权检查处理程序函数包装每个函数处理程序来实现这一点,但如果我可以注册授权检查函数,那就更好了。您可以从客户端发送用户对象id,然后在云代码中读取它?我可以做到这一点,但它没有经过身份验证。我必须访问request.user对象,才能从身份验证的角度使其具有任何值。否则,任何人都可以在我的应用程序中创建用户,并使用