0
私は、ExpressJS v4を使ってプロジェクトを進めています。Express 4ミドルウェアからコントローラクラスにアクセスする方法は?
実行順序は次のとおりです。
- 登録ミドルウェア
- 登録ハンドラ(ハンドラはES6クラスのメソッドです)
だから、私のハンドラは、私が認証ミドルウェアでやって何を...
let aCtrl = new AController(...);
let bCtrl = new BController(...);
let blogCtrl = new BlogController(...);
app.get('/blog/post/:id', (req, res, next) => {
return blogCtrl.showBlogPost(req, res, next);
});
...
のように見えています:
userCheckMiddlware(req, res, next)
{
if(authSuccess)
next();
else
res.sendStatus(401);
}
今、私は何をしたいさて、私の問題は、私はdoesNotRequireAuth()
メソッドを持っているハンドラすなわちコントローラオブジェクトを取得しない方法です
userCheckMiddlware(req, res, next)
{
if(controller.doesNotRequireAuth) {
next();
}
if(authSuccess)
next();
else
res.sendStatus(401);
}
のラインで何かです。
私はExpressは、要求を解析し、最初のハンドラを決定し、その後、中間用品の実行を開始するだろうと思いました。そうじゃないの? – ultimate
はい、ハンドラーを繰り返し処理し、URLの一致を探します。一致する場合、expressはミドルウェアを1つずつ実行します。しかし、それが実行される前に、 "最後のミドルウェア"(通常コントローラです)はわかりません。 – libik