質問

鉄ルータの使用そのようなフックを追加することは可能です。

// this hook will run on almost all routes
Router.before(mustBeSignedIn, {except: ['login', 'signup', 'forgotPassword']});

// this hook will only run on certain routes
Router.before(mustBeAdmin, {only: ['adminDashboard', 'adminUsers', 'adminUsersEdit']});
.

https://github.com/eventedmind/iron-router#using-フック

しかし、ドキュメンテーションは、これらのフック「サーバーサイド」の作り方を決して言わない。

アイデアは、公開されているものをより管理したい1つまたは2つの特定のルートを除いて、すべてのルートの公開コレクションを監督するフックを作成することです。

役に立ちましたか?

解決

鉄ルータはクライアントとサーバー上の両方で同じで、クライアントとサーバーの両方で利用可能なディレクトリ/ファイルで宣言を実行できます。

デフォルトでは、宣言されたルートはクライアント用です。ルートをサーバー側にする場合は、where: 'server'を含めることで明示的に宣言します。

公式文書

ルートの定義とルータの設定は、サーバーとクライアントとほぼ同じです。デフォルトでは、ルートはクライアントルートとして作成されます。このようなルートにWHEREプロパティを提供することで、ルートがサーバーを対象としていることを指定できます。

Router.map(function () {
  this.route('serverRoute', {
    where: 'server',

    action: function () {
      // some special server side properties are available here
    }
  });
});
.

コントローラ上ではなく、Router.Mapに配置する必要がある場合に注意してください。

サーバーのアクション機能(RouteControllers)には、さまざまなプロパティとメソッドがあります。すなわち、サーバにはまだレンダリングはありません。そのため、レンダリングメソッドは利用できません。また、サブスクリプションを待機することも、サーバー上のWAITメソッドを呼び出すことはできません。サーバールートConnectリクエストのBare要求、応答、および次のプロパティ、およびクライアントと同じようにParamsオブジェクトを取得します。

Router.map(function () {
  this.route('serverFile', {
    where: 'server',
    path: '/files/:filename',

    action: function () {
      var filename = this.params.filename;

      this.response.writeHead(200, {'Content-Type': 'text/html'});
      this.response.end('hello from server');
    }
  });
});
.

あなたが見るように、命名規則は1つだけです、それ故あなたはこのようなものを述べることができます:

Router.before(someFilter, {only: ['clientRoute1', 'clientRoute2', 'serverRoute1']});
.

または

Router.before(someOtherFilter, {except: ['clientRoute3', 'clientRoute4', 'serverRoute2']});
.

あなたが通常どおりです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top