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 }
Cookie¶
The session will be stored using the vapor-session
cookie.