无法重定向到 url 使用服务器端 Swift 完美
Unable to redirect to url using Server Side Swift Perfect
我正在使用服务器端 Swift 完美的 Web 服务框架。
用于提供 static/dynamic 内容的小胡子模块。
我想在身份验证成功后重定向到主页后实现登录功能。
"I searched everywhere but didn't find any such feature which redirects to a 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 公司忘记了这个功能。也许我应该报告它。
任何人都知道什么可以解决我的问题?请告诉。
谢谢
最后我自己想出了解决办法。 url 重定向的这个特性不包含在 PerfectHTTP 或 PerfectHTTPServer 模块本身。您必须导入另一个模块 -> Perfect-OAuth2 by PerfectlySoft。 'redirect' 方法直接在 HTTPResponse 扩展下声明。或者你可以像这样添加你自己的,
extension HTTPResponse {
public func redirect(path: String) {
self.status = .found
self.setHeader(.location, value: path)
self.completed()
}
}
希望对您有所帮助!
我正在使用服务器端 Swift 完美的 Web 服务框架。 用于提供 static/dynamic 内容的小胡子模块。
我想在身份验证成功后重定向到主页后实现登录功能。 "I searched everywhere but didn't find any such feature which redirects to a 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 公司忘记了这个功能。也许我应该报告它。 任何人都知道什么可以解决我的问题?请告诉。 谢谢
最后我自己想出了解决办法。 url 重定向的这个特性不包含在 PerfectHTTP 或 PerfectHTTPServer 模块本身。您必须导入另一个模块 -> Perfect-OAuth2 by PerfectlySoft。 'redirect' 方法直接在 HTTPResponse 扩展下声明。或者你可以像这样添加你自己的,
extension HTTPResponse {
public func redirect(path: String) {
self.status = .found
self.setHeader(.location, value: path)
self.completed()
}
}
希望对您有所帮助!