2

Parse.com は、私が現在使用している Javascript SDK の匿名ユーザーをサポートしていないことを認識しています。私は、Parse Javascript SDK を使用していて、Parse ios SDK に提供されている匿名ユーザー機能のようなものを望んでいる人にとって、どのような代替手段があるかを Parse のスタッフ メンバーに尋ねました。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 のスタッフから提供された別の解決策に頼るべきですか、それとも不要ですか?

4

2 に答える 2

1

「ランダム」または「GUID」を生成し、それをパスワードと電子メールが未定義の User.username にプラグインできますか...そのユーザーの挿入時に、匿名の有効な Parse.User オブジェクトがあります。User.insert() からの戻り値は、期限切れのない「トークン」です。Cookie を使用して {"token":val, "username":val} を保存できます。

passwd がないと、ユーザーがログインすることはなく、検証済みのセッションの代わりにユーザーのトークン (-H "X-Parse-Session-Token: rcid...") を渡すことができるクラウドコードを常に呼び出す必要があります。 「ログイン」で確立されます。

テキストフィールドに入力せずにユーザーをオンボードしたいREST APIでこの手法を使用しました。彼らは情報を提供せず、匿名のクラウド アカウントを使用することに同意するだけです。

于 2013-09-29T19:10:18.943 に答える
0

この回答が非常に遅いことはわかっていますが、何も変わっていないため、関連性があります。Parse JS SDK には匿名ユーザー用のクラスはありません。

ユーザー セッションがなくてもオブジェクトを作成、保存、編集、および削除できる理由は、誰でも使用できるオブジェクトを作成できるからです。IE、「パブリック オブジェクト」。これらのオブジェクトにも 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 オブジェクトを作成します。次に、メッセージ列を更新して保存します。保存されたオブジェクトが返され、Foo への読み書きを禁止する ACL を作成します。次に、Foos ACL を設定し、再度保存します。保存されたオブジェクトが返され、メッセージ列を再度更新しようとします。今回はエラーが発生し、エラー コールバックがエラーをログに記録します。これは、マスター キーを使用しない限り、だれも foo を更新できないためです。これは Cloud Code で行う必要があります。

Parse.Cloud.useMasterKey();
foo.save().then.... //after second return of foo.save() above
于 2015-05-30T16:46:17.993 に答える