无法使用服务器端Swift Perfect重定向到url

时间:2018-09-01 08:49:12

标签: swift url-redirection perfect server-side-swift

我正在使用Web服务的Server Side Swift Perfect框架。 用于提供静态/动态内容的Mustache模块。

我想在成功身份验证后重定向到主页后实现登录功能。 “我到处搜索,但是找不到重定向到网址的任何此类功能”

这是我用于实现登录的代码-

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 :(得分:0)

最后,我自己想出了解决方案。 url重定向的此功能不包含在PerfectHTTP或PerfectHTTPServer模块本身中。您必须导入另一个模块-> PerfectlySoft的Perfect-OAuth2。 “ redirect”方法在HTTPResponse扩展名下直接声明。或者,您也可以这样添加自己的内容,

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

我希望这会有所帮助!