0

Meteor を使用して管理パネルを作成しようとしています。管理パネルに関連するjsおよびhtmlファイルを通常のユーザーにロードしたくありません。ユーザーがログインしているときにのみロードする必要があります。どうすればこれを達成できますか? (FlowRouterを使用してルートを管理しています)

4

2 に答える 2

1

まず、実際にファイルをロードするタイミングに注意しましょう。Tracker の計算Meteor.user()で使用できるリアクティブ データ ソースです。

Tracker.autorun(() => {
  if(Meteor.user()) {
    loadUserFiles()
  }
})

これらのファイルは、HTTP 呼び出し、DOM、jQuery、独自の DDP マジックなどを介してロードできます...
それらをロードする方法はかなり広い問題です。リクエスタがログインユーザーであることをサーバー側で確認してください。

現在、ユースケースに応じて、このような方法でロードしたいファイルの 2 つの異なるカテゴリがあります。

基本的なリソース ファイル

これらには、CSS、画像、HTML、JS、ビデオ、または音楽 (...) ファイルをいじって DOM に追加することが含まれます。これを行う方法は、他のリソース リクエストと似ています。jQuery/Node リクエストの組み合わせで適切に行うための多数のリソースがすでに存在し、Meteor で機能させるために何も変更する必要はありません。HTML リクエストを使用する場合は、サーバー側のユーザー チェックを
行う必要がある場合があります。WebApp.rawConnectHandlers

HTML テンプレート ファイル

これはよりトリッキーです。クライアントが受信したテンプレートにアクセスするのを防ぐ方法はありません。テンプレートはサーバー側でコンパイルされ、JavaScript コードとして送信されるため、一部のユーザーにテンプレートを送信するには、Meteor がファイルをビルドする方法を変更する (または慎重に作成されたパッケージを使用する) 必要があります。これにより、テンプレートを個別にロードできるようになります。
しかし、私はそれが正しいアプローチだとは思いません。テンプレートは、データを表示するための手段にすぎません。データの送信先を制御する場合、ログアウトしたユーザーが保護されたテンプレートにアクセスすると、エラーと空白が表示されます。

テンプレート ヘルパー ファイルは「基本的なリソース」カテゴリに分類されるため、追加のヘルパーをそのようにロードすることは理にかなっています。ログアウトしたクライアントをデッド コードから解放します。

于 2015-11-09T09:37:40.350 に答える