我知道Parse.com不支持匿名用户使用我现在正在使用的Javascript SDK。我已经向Parse工作人员询问了使用Parse Javascript SDK的人的替代方案,并希望获得为Parse ios SDK提供的匿名用户功能。 Parse工作人员告诉我:“这尚未得到官方支持,但您可以通过生成随机用户名和密码来实现类似的东西,该用户名和密码存储在localStorage中供该用户使用”。现在,现在,以下代码允许我将信息保存到我的Parse数据库
var MYObject = Parse.Object.extend("MYObject");
var myObject = new MYObject();
var SomeStuff = "Test";
myObject.set("RECORD",SomeStuff);
myObject.save(null, { success: function(myObject)
{ //alert alert('New object created with objectId: ' + myObject.id); }
这会创建一个新类,然后添加“RECORD”和“Test”。有用。然而,这可以在不需要用户名或密码的情况下保存。我想知道为什么只允许用户保存这样的数据是不够的,而不是具有匿名用户功能Parse提供或在我的情况下,匿名用户功能的替代解决方案,因为Parse Javascript不支持匿名用户我正在使用的SDK。匿名用户功能首先提供安全性的原因是什么?我应该采用Parse员工给我的替代解决方案还是不必要?
答案 0 :(得分:1)
你可以生成一个'随机'或'guid',然后将其插入到User.username中,密码为& email undefined ...在该用户的插入中,你有一个有效的Parse.User对象是匿名的。 User.insert()的返回是“令牌”,它永不过期。您可以使用cookie来存储{“token”:val,“username”:val}。
如果没有passwd,你永远不会登录用户,并且总是被迫调用cloudcode,你可以传入用户的令牌(-H“X-Parse-Session-Token:rcid ...”)代替使用'login'建立的验证会话。
我在REST API中使用了这种技术,我希望在没有任何文本字段输入的情况下登录用户。他们不提供任何信息,只同意使用匿名云帐户。
答案 1 :(得分:0)
我知道这个答案很晚,但它是相关的,因为没有任何改变。 Parse JS SDK中没有匿名用户类。
您可以在没有用户会话的情况下创建,保存,编辑和删除对象的原因是因为您可以创建任何人都可以使用的对象; I.E,“公共物品”。您也可以在这些对象上设置ACL凭据,但不会将新的objectsIds与userObjectIds关联,因此只能使用您的应用程序MasterKey更新Cloud Code中的所述对象。
var Foo = Parse.Object.extend("Foo");
var foo = new Foo();
foo.set("message", "Hello Foo");
foo.save().then(function(foo){
//foo was saved
//anyone can edit it right now
//make it disappear into a black hole
//in other words, nobody can edit without Master Key
var acl = new Parse.ACL();
acl.setPublicReadAccess(false); //nobody can read it
acl.setPublicWriteAccess(false);//nobody can write it
foo.setACL(acl);
return foo.save();
}).then(function(foo){
//since foo was returned, we can still read it, but
//we cannot edit it anymore...
foo.set("message", "cannot update without Master Key");
return foo.save();
}).then(function(foo){
//this will not run
}, function(error){
//catch error for cannot update foo
log(error);
});
在这个例子中,我首先创建了Foo对象。然后我更新消息列并保存。返回保存的对象,我创建一个ACL,阻止任何人读写Foo。然后我设置Foos ACL并再次保存。返回保存的对象,我尝试再次更新消息列。这次发生错误,错误回调记录错误。发生这种情况是因为我无法更新foo任何人,除非我使用万能钥匙并且必须在云代码中进行。
Parse.Cloud.useMasterKey();
foo.save().then.... //after second return of foo.save() above