2016-12-26 4 views
0

В Vapor, я могу легко безопасные маршруты в сеансом с этим:Занятия в Китуре?

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

И доходы обработчика, как обычно, никакой проверки сессий, как это уже сделано drop.group(protect).

Однако в 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?

ответ

2

Если у вас есть общая логика, необходимая для нескольких маршрутов, вы можете настроить промежуточное программное обеспечение и выполнить его перед каждым маршрутом. Kitura поддерживает маршрутизацию маршрута Узла экспресс; вы можете последовательно зарегистрировать промежуточное программное обеспечение, и промежуточное ПО будет обработано (при условии, что их пути монтирования совпадают с URL-адресом запроса) в том же порядке, в котором они были зарегистрированы.

Например:

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

В этом случае запрос согласования "/private/helloworld" будет обработан handler1 и затем handler2, до тех пор, как handler1 вызывает next() в конце его обработки.

Смежные вопросы