私は多くのルートを持っています。 ほとんどは認証が必要です。 そうではありません。ここで認証ミドルウェアでルートを整える
彼らは以下のとおりです。
router.get('/secure1', function (req,res) {...})
router.get('/secure2', function (req,res) {...})
router.get('/secure3', function (req,res) {...})
router.get('/:id', function (req,res) {...})
1.だが、私は公共のルートを持っていなかった想像してみましょう。
私はちょうどセキュリティチェックミドルウェアを置くことができ、すべてがうまくいきます。 セキュリティで保護された接続のみを許可し、セキュリティで保護されていないリダイレクトを行います。
router.use(function (req,res,next) {
securityCheck()
next()
})
router.get('/secure1', function (req,res) {...})
router.get('/secure2', function (req,res) {...})
router.get('/secure3', function (req,res) {...})
router.get('/:id', function (req,res) {...})
これは機能します。これはすべての安全なルートを安全にしますが、私は公共のルート( '/:id')から私をブロックします。
router.get('/:id', function (req,res) {...})
router.use(function (req,res,next) {
securityCheck()
next()
})
router.get('/secure1', function (req,res) {...})
router.get('/secure2', function (req,res) {...})
router.get('/secure3', function (req,res) {...})
をしかし、この方法は、それは私のすべての要求をキャッチし、すべてのセキュアパスはアクセスできません:
2.私が先頭に公共のルートを移動することができます。
3.私はすべての単一の安全なルート上のミドルウェアを置くことができるが、それは少し退屈と人間のエラーが発生しやすいようです:
router.get('/secure1',securityCheck(), function (req,res) {...})
だから、私はdidnの良いオプションがあります考えない?ベストプラクティスとは何でしょうか?
ありがとうございました
ありがとうございます!私は同意する、私は最初の方法は維持するのが最も簡単で、人間の間違いは、それが反対であるより安全であるかのように公開されているものを作る傾向があるように感じる。 それで、誰かが最後のルートをリクエストしている場合、ミドルウェアに続行するように指示するにはどうすればよいですか? –
もし私があなただったら、非セキュアなものと区別することになります(つまり、/ public /:idのようなもの)。それは安全なものと混同されないからです。 idパラメータを文字列secure3として設定します)。ミドルウェアの初めに次のようなことができます:if(req.pathがpublicで始まる){next()} else {...} –
意味がありますか? :) –