2016-12-26 10 views
0

は、Iこれでログインセッションで簡単にでき、安全なルート:それはすでにdrop.group(protect)によって行われますようKituraのセッションルート?蒸気中の

drop.group(protect) { 
    secure in 
    secure.get("secureRoute", handler:) 
    secure.post("securePostRoute", handler:) 
    //and so forth 
} 

そしてハンドラは、いつものようにセッションのためのチェックを進行しません。

しかし、Kituraで、私が同じことを達成したい場合も、私はこれを行う必要があるだろうと思わ:私は手動でごとにセッションをチェックする必要があります

router.get("/") { request, response, next in //Get the current session sess = request.session //Check if we have a session and it has a value for email if let sess = sess, let email = sess["email"].string { try response.send(fileName: pathToFile).end() } else { try response.send(fileName: pathToAnotherFile).end() } } 

セキュアルート。これは非常に冗長になります。

Vapor'sのような優雅なソリューションはありますか?

答えて

2

複数のルートで共通のロジックが必要な場合は、ミドルウェアをセットアップして各ルートの前に実行させることができます。 Kituraはノードエクスプレススタイルのルート処理をサポートしています。ミドルウェアを順番に登録することができ、ミドルウェアは登録されたのと同じ順序で処理されます(マウントパスがリクエストURLと一致すると仮定します)。例えば

:この場合

router.get("/private/*", handler: handler1) 
router.get("/private/helloworld", handler: handler2) 

"/private/helloworld"に一致要求があればhandler1がその処理の最後にnext()を呼び出すように、handler2によってその後handler1によって処理されます。

関連する問題