Я пытаюсь использовать Vapor 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 г
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 ...
Пожалуйста, дайте мне знать, если можно решить эту проблему Эм. Спасибо!
Спасибо! Ты прав. Мне просто нужно использовать ** drop.grouped («клиент»). Grouped (auth) ** intead of ** drop.addConfigurable (middleware: auth, name: "auth") ** –