2016-11-27 51 views
2

我嘗試使用蒸汽AuthMiddleware爲兩個實體:客戶商人如何將AuthMiddleware用於多個實體?

https://vapor.github.io/documentation/auth/request.html

let auth = AuthMiddleware(user: Customer.self) { value in 
       return Cookie(
        name: "vapor-auth", 
        value: value, 
        expires: Date().addingTimeInterval(60 * 60 * 5), 
        secure: true, 
        httpOnly: true 
       ) 
      } 

但正如我看到的,第一個加入的中間件(客戶)由第二取代(商家)如果他們加上:

drop?.middleware.append(auth) 

o [R

drop?.addConfigurable(middleware: auth, name: "auth") 

所以,如果我試圖通過證書從請求登錄:

guard let login = req.data["login"]?.string, 
    let password = req.data["password"]?.string else { 
     throw Abort.badRequest 
} 
let credentials = APIKey(id: login, secret: password) 
try req.auth.login(credentials) 

我有一個錯誤:

▿ Abort 
▿ custom : 2 elements 
    - .0 : HTTP.Status.badRequest 
    - .1 : "Invalid credentials." 

但它只是拋出了先增加實體, AuthMiddleware被其他AuthMiddleware取代...

請讓我知道如果有可能解決這個問題EM。 謝謝!

回答

2

你可以做這樣的事情:

drop.group(AuthMiddleware()) { authed in 
    authed.get("endpoint") { req in 
    return "" 
    } 
} 

任何東西,你把裏面的組(並用authed創建具有端點)將使用AuthMiddleware()

+0

謝謝!你是對的。我只需要使用** drop.grouped(「customer」)。grouped(auth)** ** drop.addConfigurable(middleware:auth,name:「auth」)的** –

相關問題