0

数週間前に流星を見つけて、本当に興奮しました。角流星について知ったとき、私は事実上有頂天になりました。ただし、すべてのデータ バインディングを使用すると、認証がどのように機能するのか正確にはわかりません。運用システムで使用するには、それを知る必要があります。いくつかのブログ投稿と SO の質問を読みましたが、それがどのように機能するかはまだわかりません。システムを正しく使用していると確信できるように、誰かがすべてを説明してくれれば幸いです。

私の主な質問は、Angular-Meteor チュートリアルから直接引用した、公開を管理するこの標準関数に関するものです。

Meteor.publish("users",function(){
  return Meteor.users.find({},{fields: {emails: 1, profile: 1}});
});

ユーザーがuserIdクライアントのコンソールで自分を変更した場合はどうなるでしょうか? その変更はサーバーに同期され、サーバーは彼が別の人物であると見なすようです。this.userId呼び出されたクライアント側の変数とは別に保持され、Meteor.userId()変更できないようにする方法があると思います。ただし、実際に分離があること、およびその分離がどのように機能するかを確認して、流星認証を自信を持って使用できるようにしたいと思います。

助けてくれてありがとう!

4

1 に答える 1

2

いいえ、フロントエンドでのデータ変更は、サーバーによって自動的に許可されるわけではありません。insecureパッケージを削除したことを確認してください。その後、どのデータ変更を許可するかを手動で指定する必要があります。

Parties.allow({
  update: function (userId, party) {
    return (userId == party.owner);
  }
});

パーティーの所有者のみがパーティーの詳細を更新できるようにします。userIdここで meteor は、 (現在ログインしているユーザーの ID) とownerパーティーのフィールドを比較して、ユーザーが実際に所有者であることを確認します。

これはすべてサーバー側で発生するため、ユーザーはこれを和らげることができません。

allowあなたの場合、コレクションに明示的にルールを作成してユーザーがIDを編集できるようにしない限り、Meteor.usersなぜですか? -- あなたが懸念している問題は不可能です。

ドキュメントのデータとセキュリティのセクションに、これに関する詳細が記載されています。

于 2015-08-19T01:06:38.273 に答える