Vapor文档学习十一:Session

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-sessioncookie 存储session。

你可能感兴趣的:(Vapor文档学习十一:Session)