내 응용 프로그램에서 id 필드를 난독 화하는 메커니즘을 구현하고 싶습니다. 현재 모든 id 필드는 정수입니다. id 필드에 해당하는 임의의 문자열을 생성하기 위해 일종의 가역 해싱을 사용하고 싶습니다. 또한 전체 프로젝트를 최소한으로 변경하여이 작업을 수행하려고합니다.Sails.js : 미들웨어에서 req.params에 액세스하여 수정하는 방법
내 마음에 들었던 한 가지는 모든 요청 및 응답 개체를 차단하고 id
필드가 있는지 확인하기 위해 미들웨어를 작성하는 것이 었습니다. 요청에 id
필드가 들어 있고이 버전이 난독 화 된 버전 인 경우 문자열을 디코딩하고 요청 매개 변수를 정수 ID로 바꿉니다.
응답에 정수 ID가 포함 된 경우 엔 코드 함수를 실행하여 난독 화 된 ID를 클라이언트에 보냅니다.
제가 직면 한 문제는 req
개체를 수정하는 것입니다. id
필드는 req.body
또는 req.params
또는 res.query
에있을 수 있습니다. 그러나 미들웨어에서는 ID 필드가있는 경우이를 볼 수 없습니다 (req.params
).
정책을 사용해 보았습니다. 하지만 내가 겪고있는 문제는 심지어 req.params
을 변경 한 후에도 컨트롤이 컨트롤러에 도달하면 변경 내용이 손실됩니다. 이 문제를 해결하기위한 권장 방법은 무엇입니까? 정책에서
: 난 그냥 req.params, req.query 및 req.body의 값을 수정하고
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.query 및 req.body의 값이 정책에서 변경된대로 수정 된 값이됩니다. 그러나 req.params는 클라이언트가 보낸 내용으로 다시 변경되고 정책의 변경 내용은 손실됩니다.
일부 코드, pls? – SkyQ
@SkyQ : 몇 가지 샘플 코드가 추가되었습니다. 나는 지금 많이하고 있지 않다. req.params, req.query 및 req.body의 값을 변경하는 것. –