Невозможно перенаправить на URL с помощью Server Side Swift Perfect - PullRequest
0 голосов
/ 01 сентября 2018

Я использую Server Side Swift Perfect Framework для веб-сервисов. Модуль усов для подачи статического / динамического контента.

Я хочу реализовать функцию входа в систему после перенаправления на домашнюю страницу при успешной аутентификации. «Я искал везде, но не нашел такой функции, которая перенаправляет на URL»

Вот код, который я использую для входа в систему -

func signin(request:HTTPRequest, response: HTTPResponse) {
    do {
        var errorMessage:String;
        var values = MustacheEvaluationContext.MapType()
        let email:String = request.param(name: "email")!
        let password:String = request.param(name: "password")!
        print("Email -> \(email) & Password -> \(password)")
        //After Authentication
        //Yay I want to go back to home page.
        mustacheRequest(request: request, response: response, handler: MustacheHelper(values: values), templatePath: webroot + "/index.html")
        // Sadly this doesn't work, it just renders the homepage without changing the url or 'without redirecting'
        response.completed()
} catch {
        print(error)
        logError(error.localizedDescription)
        response.setBody(string: "An error occured \(error)").completed()
    }
}

Думаю, компания PerfectlySoft затуманилась, чтобы поставить эту функцию. Может быть, я должен сообщить об этом. Кто-нибудь знает, что может быть решением моей проблемы? Расскажите пожалуйста. Спасибо.

1 Ответ

0 голосов
/ 01 сентября 2018

Наконец-то я сам разобрался с решением. Эта функция перенаправления URL не включена в сам модуль PerfectHTTP или PerfectHTTPServer. Вы должны импортировать другой модуль -> Perfect-OAuth2 от PerfectlySoft. Метод 'redirect' прямо объявлен под расширением HTTPResponse. ИЛИ вы можете сделать это, добавив свой собственный, как это,

extension HTTPResponse {
    public func redirect(path: String) {
        self.status = .found
        self.setHeader(.location, value: path)
        self.completed()
    }
}

Надеюсь, это поможет!

...