16

meteor.js を使用して、ユーザーから単純なフォーム データを収集するだけのアプリを構築しているとします。たぶん、簡単な質問への答えか何か。データを送信するためにログインする必要はありません。

私のDBにがらくたを挿入するだけのChromeコンソールでjsループを作成する人からアプリを保護するにはどうすればよいですか?


これを行うことで、削除と更新を保護できます。

Formanswers.allow({
  insert: function () {
    return true;
  },
  update: function () {
    return false;
  },
  remove: function () {
    return false;
  },
});

そして、ユーザーがログインしている場合 (覚えているように、私のアプリではそうではありません)、各挿入にタイムスタンプを付けて、次のように確認できます。

  insert: function (userId, doc) {
        if (userId && (Formanswers.findOnd({userid: userId, time: SOMETHING TIME SPECIFIC}).count() < 1)) return true;
  },

だから私の質問は次のとおりです。匿名の(ログインしていない)ユーザーのために一意のuserId-thingまたはIP-addressまたは何かを取得する他の方法はありますか?

ありがとう!

4

4 に答える 4

12

隕石パッケージを使用できます。

アカウント匿名

https://github.com/tmeasday/meteor-accounts-anonymous

だからあなたは使う

Meteor.loginAnonymously();

ユーザーが初めてページにアクセスした場合は、.allow を使用して必要なものを確認します

于 2013-02-08T05:24:44.710 に答える
0

セッションまたは localStorage キーを使用します。訪問者がフォームを送信するときに、キーが設定されているかどうかを確認し、設定されている場合は挿入を拒否します。

于 2013-02-07T16:15:16.713 に答える
0

次のようなことができます。

if (Meteor.isClient) {
    Meteor.startup(function () {
        Session.set('currentuser', 'something randomly generated by another function');
    }
}

「currentuser」がデータベースに既に挿入されているかどうかを確認します。

于 2013-02-07T16:18:49.790 に答える