Аутентификация и авторизация пользователя Vapor 4 - PullRequest
3 голосов
/ 29 мая 2020

Недавно я начал с Vapor4 (не использовал старую версию) и пытаюсь понять, как реализовать авторизацию и аутентификацию пользователей. Хотя я понимаю основные концепции c, поработав с Laravel раньше, я все еще не могу понять, что делать в паре.

Я расширил своего пользователя с помощью. Ik нет хеширования pw, это для тестирования и базового понимания c. Мы пока проигнорируем это.

extension User: ModelAuthenticatable
{
    static let usernameKey = \User.$name
    static let passwordHashKey = \User.$password

    func verify(password: String) throws -> Bool {
        return password == self.password
    }
}

Проблема в том, что я не могу найти руководство, как использовать эту аутентификацию. Я просто пытаюсь заставить его работать, но безуспешно. Это находится в моем файле маршрутов.

let auth = app.grouped(User.authenticator())        
auth.get("sign-in") { req in
    "I'm authenticated"
}

Моей первой целью было бы просто получить успешный или неудачный ответ при попытке использовать этот маршрут. В конечном итоге я хочу переключиться на решение на основе токенов, но по одному шагу за раз.


я прочитал: https://docs.vapor.codes/4.0/authentication/ и https://theswiftdev.com/all-about-authentication-in-vapor-4/ . Как бы то ни было, я не мог не разобраться, как пользоваться описанными аутентификаторами.

1 Ответ

4 голосов
/ 29 мая 2020

Пока я писал это, я наконец понял это. Во всяком случае для людей, которые на это спотыкаются. Это так просто:

let auth = app.grouped(User.authenticator(), User.guardMiddleware())
auth.get("sign-in") { req in
    "I'm authenticated"
}

Ваш пользовательский класс по умолчанию предлагает guardMiddleware. Вам не нужно ничего реализовывать, просто используйте это в своем маршруте.

...