Vapor GitHub

You're viewing documentation for an older version. View the latest version

Sessions#

Sessions help you store information about a user between requests. As long as the client supports cookies, sessions are easy to create.

Middleware#

Enable sessions on your Droplet by adding an instance of SessionMiddleware.

import Sessions

let memory = MemorySessions()
let sessions = SessionsMiddleware(sessions: memory)

Then add to the Droplet.

let drop = Droplet()
drop.middleware.append(sessions)

Note: If you’d like to enable or disable the middleware based on config files, check out middleware.

Request#

After SessionMiddleware has been enabled, you can access the req.sessions() method to get access to session data.

let data = try req.session().data

Example#

Let’s create an example that remembers the user’s name.

Store#

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."
}

On POST /remember, fetch a name from the request input, then store this name into the session data.

Fetch#

On GET /remember, fetch the name from the session data and return it.

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
}

The session will be stored using the vapor-session cookie.