Skip to content

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 "sessions" to your middleware array.

Config/droplet.json

{
    ...,
    "middleware": [
        ...,
        "sessions",
        ...,
    ],
    ...,
}

By default, the memory sessions driver will be used. You can change this with the droplet.sessions key.

Config/droplet.json

{
    ...,
    "sessions": "memory",
    ...,
}

Request

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

import Sessions

let session = try req.assertSession()
print(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)
    }

    let session = try req.assertSession()
    try session.data.set("name", 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
    let session = try req.assertSession()

    guard let name = session.data["name"]?.string else {
        return throw Abort(.badRequest, reason: "Please POST the name first.")
    }

    return name
}

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