私のアプリケーションでidフィールドを難読化する仕組みを実装したいと思います。現在、すべてのidフィールドは整数です。 idフィールドに対応するランダムな文字列を作成するために、ある種のリバーシブルハッシュを使用したいと思います。また、私はプロジェクト全体に最小限の変更を加えてこれを達成しようとしています。Sails.js:ミドルウェアのreq.paramsにアクセスして変更する方法
私の頭に浮かべたのは、すべてのリクエストとレスポンスオブジェクトを傍受し、id
フィールドの有無をチェックするためのミドルウェアを書くことでした。要求にid
フィールドが含まれており、難読化されたバージョンの場合は、文字列をデコードし、要求パラメータを整数IDに置き換えます。
応答に整数IDが含まれる場合は、encode関数を実行して難読化されたIDをクライアントに送信します。
私が直面している問題は、req
オブジェクトを変更することです。 id
フィールドは、req.body
またはreq.params
またはres.query
に存在できます。しかし、ミドルウェアでは、IDフィールドが存在するときはIDフィールドが表示されません(req.params
)。
ポリシーを使用しようとしました。しかし、私がそこに直面している問題は、req.params
を変更した後でさえ、コントロールがコントローラに達すると変更が失われます。この問題を解決するにはどうすればよいでしょうか?ここで
は、サンプルコードは次のとおりです。ポリシーで
:
module.exports = function (req, res, next) {
req.params.id = '12345';
req.query.pageSize = 30;
req.body = {};
sails.log.info('req.params', req.params);
sails.log.info('req.query', req.query);
sails.log.info('req.body', req.body);
return next();
};
私はちょうどreq.params、req.queryとreq.bodyの値を変更しています。
コントローラでこれらの値にアクセスしようとすると、req.queryとreq.bodyの値は、ポリシーで変更された変更された値になります。しかし、req.paramsはクライアントから送信されたものに変更され、ポリシーの変更は失われます。
いくつかのコード、pls? – SkyQ
@SkyQ:いくつかのサンプルコードを追加しました。今はあまりやっていません。 req.params、req.query、req.bodyの値を変更するだけです。 –