Swift 如何为多个实体使用AuthMiddleware?

Swift 如何为多个实体使用AuthMiddleware?,swift,authentication,middleware,vapor,Swift,Authentication,Middleware,Vapor,我尝试将VaporAuthMiddleware用于两个实体:Customer和Merchant 但正如我所看到的,第一个添加的中间件(客户)被第二个(商户)替换,如果他们添加了: drop?.middleware.append(auth) 或 因此,如果我尝试通过请求中的凭据登录: guard let login = req.data["login"]?.string, let password = req.data["password"]?.string else {

我尝试将VaporAuthMiddleware用于两个实体:CustomerMerchant

但正如我所看到的,第一个添加的中间件(客户)被第二个(商户)替换,如果他们添加了:

drop?.middleware.append(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替换

请告诉我是否有可能解决这个问题。
谢谢

您可以这样做:

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

您在组中放置的任何内容(并使用
authed
创建端点)都将使用
AuthMiddleware()

谢谢!你是对的。我只需要使用drop.grouped(“customer”).grouped(auth)intead of drop.addConfigurable(中间件:auth,名称:“auth”)
▿ Abort
▿ custom : 2 elements
    - .0 : HTTP.Status.badRequest
    - .1 : "Invalid credentials."
drop.group(AuthMiddleware()) { authed in
  authed.get("endpoint") { req in
    return ""
  }
}