私の流星アプリケーションからいくつかのREST APIエンドポイントを提供する必要があります。
エンドポイントはサーバー側でアクセスできる必要があります。そのため、サーバー側ルーティングにIronルーターを使用しています。
素晴らしい作品ですが、許可チェックのためthis.params
にアクセスする必要があります。Iron Route - サーバー側、onBeforeAction()からthis.paramsにアクセス
私の現在のルート:
Router.route('myServerRoute', {
where: "server",
path: '/api/v1/doit/:partner',
onBeforeAction: function(req, res, next) {
API.beforeAction(req, res, next, ['admin','API']);
}
})
API.beforeAction
は、私はユーザートークンを検証するために使用している機能である(このトークンは、ヘッダーの1つである)
このトークンが有効で、そのユーザーが第4パラメータのロールのいずれかを持っている場合は、機能チェックを使用します。
:partner
は、APIを使用するパートナーの名前です。
レッツは
は、だから私は:partner
パラメータの値を渡したい:partner
は私がstore1
役割を持ってユーザーのみが/api/v1/doit/store1
URLにアクセスすることができますことを確認したい'store1'
(/api/v1/doit/store1
)
であると言います、onBeforeAction
機能にAPI.beforeAction
機能
に私はthis.params
へのアクセスを持っていない(空の)
一部は、Router.current()
を使用してパラメータにアクセスすることを提案しましたが、これはクライアントコールであり、サーバー側では使用できません。
req.url
を使用して解析し、パートナー名を取得できます。 Iron Routeで既にこのURLが解析されていることがわかったときに解析するのは好きではありません
onBeforeAction
のURLパラメータを取得する方法を教えてください。
珍しい、[フックに鉄ルータガイド部(http://iron-meteor.github.io/iron-router/#using-hooksルート関数の使用可能なすべての特性も利用可能である」と言いますここでthis.params " –
@MichelFloyd、はい、私もそう思っていました... [console.log(" params: "、JSON.stringify(this.params、null、2)); ] "this.params"はクライアント側ルーティングでのみ利用可能と思われます – Izack
ああ、サーバー側。代わりにルートアクションの前に役割のチェックを入れてもらえますか? –