需要登录才能进行写访问的后端即服务?

时间:2013-01-06 04:12:05

标签: javascript parse-platform single-page-application

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

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

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

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

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

例如Kinvey在集合级安全性方面有几种变体: http://devcenter.kinvey.com/html5/guides/security#Collectionlevelpermissions

Shared的默认安全级别使用户可以读取集合中的所有内容,但只能写入自己的项目。您可能还希望使用Private安全级别来制作它,以便您只能读取和写入自己的项目。

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

使用入门级权限,您可以对您管理的特定用户或用户组进行细粒度访问。您甚至可以确定用户对您的输入,读取或写入的安全级别。如果您需要通过控制更精细,您可以使用业务逻辑完全编写自己的安全性。

完全披露 - 我是Kinvey的工程师。