1
0
Fork 0
arangodb/Documentation/Books/Manual/Foxx/Sessions/Storages
Alan Plum b5667ca744
Consistent docs links
2016-06-14 17:23:30 +02:00
..
Collection.mdpp Consistent docs links 2016-06-14 17:23:30 +02:00
JWT.mdpp Consistent docs links 2016-06-14 17:23:30 +02:00
README.mdpp Rename Users documentation to Manual 2016-05-24 16:09:21 +02:00

README.mdpp

!CHAPTER Session Storages

Session storages are used by the sessions middleware to persist sessions across requests. Session storages must implement the `fromClient` and `forClient` methods and can optionally implement the `new` method.

The built-in session storages generally provide the following attributes:

* **uid**: `string` (Default: `null`)

  A unique identifier indicating the active user.

* **created**: `number` (Default: `Date.now()`)

  The numeric timestamp of when the session was created.

* **data**: `any` (Default: `null`)

  Arbitrary data to persisted in the session.

!SECTION new

`storage.new(): Session`

Generates a new session object representing an empty session. The empty session object should not be persisted unless necessary. The return value will be exposed by the middleware as the `session` property of the request object if no session identifier was returned by the session transports and auto-creation is not explicitly disabled in the session middleware.

**Examples**

```js
new() {
  return {
    uid: null,
    created: Date.now(),
    data: null
  };
}
```

!SECTION fromClient

`storage.fromClient(sid): Session | null`

Resolves or deserializes a session identifier to a session object.

**Arguments**

* **sid**: `string`

  Session identifier to resolve or deserialize.

Returns a session object representing the session with the given session identifier that will be exposed by the middleware as the `session` property of the request object. This method will only be called if any of the session transports returned a session identifier. If the session identifier is invalid or expired, the method should return a `null` value to indicate no matching session.

**Examples**

```js
fromClient(sid) {
  return db._collection('sessions').firstExample({_key: sid});
}
```

!SECTION forClient

`storage.forClient(session): string | null`

Derives a session identifier from the given session object.

**Arguments**

* **session**: `Session`

  Session to derive a session identifier from.

Returns a session identifier for the session represented by the given session object. This method will be called with the `session` property of the request object unless that property is empty (e.g. `null`).

**Examples**

```js
forClient(session) {
  if (!session._key) {
    const meta = db._collection('sessions').save(session);
    return meta._key;
  }
  db._collection('sessions').replace(session._key, session);
  return session._key;
}
```