Session可以帮助我们在请求的时候存储用户的相关信息。 只要客户端支持cookie,session就很容易创建。
Middleware
向Droplet
添加一个SessionMiddleware
的实例对象来启用session。
import Sessions
let memory = MemorySessions()
let sessions = SessionsMiddleware(sessions: memory)
然后添加到Droplet
:
let drop = Droplet()
drop.middleware.append(sessions)
Note:如果你想通过配置文件控制session的启用和关闭,请参考Middleware
Request
SessionMiddleware
启用之后,可以通过req.sessions()
方法访问session中的数据。
let data = try req.session().data
Example
让我们创建一个存储用户名的示例。
Strore
drop.post("remember") { req in
guard let name = req.data["name"]?.string else {
throw Abort.badRequest
}
try req.session().data["name"] = Node.string(name)
return "Remebered name."
}
通过 POST/ remember
接口,从请求中获取name
,然后存储在 session中。
Fetch
drop.get("remember") { req in
guard let name = try req.session().data["name"]?.string else {
return throw Abort.custom(status: .badRequest, message: "Please POST the name first.")
}
return name
}
通过GET /remember
接口,从session中获取name
,并返回。
Cookie
通过使用vapor-session
cookie 存储session。