2

CustomerMerchantの 2 つのエンティティにVapor 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
                )
            }

しかし、ご覧のとおり、最初に追加されたミドルウェア (顧客) は、次のように追加した場合、2 番目 (マーチャント) に置き換えられました。

drop?.middleware.append(auth)

また

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 に置き換えられた、最初に追加されたエンティティに対してのみスローします...

この問題を解決できるかどうか教えてください。ありがとう!

4

1 に答える 1

2

次のようなことができます。

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

グループ内に配置したもの (およびauthedエンドポイントの作成に使用したもの) はすべて、AuthMiddleware().

于 2016-11-27T21:53:02.763 に答える