2017-10-04 4 views
1

APIはparse(parseplatform.org)上に構築されています。parse-serverでは、 'Session'オブジェクトなしでユーザーとして照会する別の方法がありますか?

私は、ユーザーに代わってクエリを実行する必要があるバックグラウンドジョブを持っています。クエリは、ユーザーのACLが許可するオブジェクトのみを検索/更新するようにする必要があります。

多くのユーザーにとって、クラスにクエリを送信して、指定したユーザーのsessionTokenを取得してから、そのリクエストをすべてのリクエストで使用することができます。 query.find({sessionToken: "r:xxx"})

しかし、一部のユーザーでは、利用可能なオブジェクトが唯一のsessionです。多くの場合、オブジェクトはありません。sessionオブジェクトはまったくありません。

私が知る限り、Parse.Sessionインスタンスを作成することはできません。セッションを生成する唯一の方法は、Parse.User.logInを呼び出すことです。これは私たちの選択肢ではありません。これは主にユーザーのパスワード(私たちが持っていないパスワード)を必要とするだけでなく、parse-server環境でメモリリークが発生するためです。

誰かがこれに対する解決策を見つけましたか?あなたは以下の

query.find({useMasterKey:真を})を使用する必要がありユーザがいないバックグラウンドジョブの

答えて

1

useMasterKeyはACLのセキュリティ制限をバイパスします。バッチジョブに最適です。

このコードを呼び出すその他のものもmasterKeyを使用することに注意してください。正しいアクセスが

var findOptions={}; 
if (request.user){ 
    findOptions = {sessionToken:request.user.getSessionToken()}; 
} else { 
    findOptions = {useMasterKey:true}; 
} 

query.find(findOptions); 
+0

ありがとうございましたが、私はマスターキーを使用したくないので、ユーザーが見るはずのオブジェクトを返すので、ユーザーの読み取り権限に含まれるオブジェクトのみを検索する必要があります。そのオブジェクトを自分のアカウントに読み込むことができます。 –

+0

「方法」を使用してみてください。あなたがどこかに保存されたsessionTokenを持っているのかどうか分からないが、もしあなたがそれを使うことができるならhttp://parseplatform.org/Parse-SDK-JS/api/classes/Parse.User.html#methods_become –

+0

その事実は、この問題を引き起こしているユーザーのためにsessionTokensを保存していない。 'become'メソッドもクラウドコードでは安全ではありません。 –

1

はあなたがやろうとしている内容に応じて使用されていることを確認するために、前に時々私はあなただけとき彼らは、ログイン(したがって、コードを実行する必要があるかもしれませんが、次のコードを追加しますあなたはセッショントークンを持っています)。

マスターキーでコードを実行することもできますが、それには独自の問題があります。

+0

私は、新しいものが準備ができたらメールを送ることができるように、彼らのためにバックグラウンドで(コンテンツの整理/アクセス)いくつかのことをしようとしていますか? 私はマスターキーを使うことができましたが、アクセスできない情報にアクセスできるようになります。そうすれば正しいかどうかわかりません。 バッチバックグラウンドジョブとして実行するのではなく、ログインしたときにコードを実行してみてください。 –

関連する問題