1

我正在尝试编写一个 javascript 单页应用程序,允许用户登录,然后在登录后创建/修改数据库中的记录。如果可能的话,我想避免使用自己的服务器端脚本,而是使用 Parse.com、Kinvey.com 或 Cloudmine.me 之类的东西。

我的问题是这些服务具有用户登录能力,但使用 API 密钥来确定您的应用程序是否具有写入权限。一旦您的用户登录,他们似乎不会让您拥有写访问权限。我能想到的唯一方法是将写访问 API 密钥存储在用户的用户数据中,所以我会让用户登录,获取隐藏的 API 密钥,然后将应用程序的 API 密钥更改为使用该密钥,这样他们就有了写访问权限。显然这不是很安全,因为一旦通过网络发送 API 密钥,即使我们删除了他们的帐户或他们更改了密码,该用户也将具有写入权限。

也许我会以错误的方式解决这个问题,所以请随时告诉我。希望这是有道理的。谢谢!

4

2 回答 2

3

您应该能够使用以下命令限制对一组用户的访问:http Parse.ACL: //www.parse.com/docs/js/symbols/Parse.ACL.html

如果您想在每个用户的基础上控制访问,那么您将必须在用户对象上维护一个自定义属性。然后您可以检查BeforeSaveRequest()函数中的自定义属性并确定用户是否具有写入权限: http: //www.parse.com/docs/js/symbols/Parse.Cloud.BeforeSaveRequest.html

于 2013-01-06T07:25:34.263 回答
0

默认情况下,大多数 BaaS 提供商应该提供集合级别的安全性,有些甚至通过 ACL(访问控制列表)提供每个条目的安全性。

例如,Kinvey 在集合级别的安全性上有几个变化:http: //devcenter.kinvey.com/html5/guides/security#Collectionlevelpermissions

make 它的默认安全级别Shared使用户有权读取集合中的所有内容,但只能写入他们自己的项目。您可能还想使用Private安全级别来使其只能读取和写入自己的项目。

如果您想对安全性进行更细粒度的控制,您可以利用入门级权限: http ://devcenter.kinvey.com/html5/guides/security#Entitylevelpermissions

使用入门级权限,您可以为您管理的特定用户或用户组授予细粒度访问权限。您甚至可以确定用户对您的条目(读取或写入)的安全级别。如果您需要更好地控制,您可以完全访问使用业务逻辑编写自己的安全性。

全面披露 - 我是 Kinvey 的一名工程师。

于 2013-01-07T18:49:53.593 回答