Fib-Sitzung
Sitzungs-Middleware für FIBJS
Installieren
1npm install fib-session [--save]
Prüfen
1npm run ci
Erstellen einer Cookie-basierten Sitzungs-Middleware
1
2
3
4
5
6
7
8
9
10
11
12
13var Session = require('fib-session')
var session = new Session(conn, opts);
var srv = new http.Server(8000, [
session.cookie_filter, // use session ID via cookie
{
// routers
'^/foo$': (r) => {
var v = r.session.v;
},
...
}
]);
Erstellen einer API-Sitzungs-Middleware
1
2
3
4
5
6
7
8
9
10
11
12
13var Session = require('fib-session')
var session = new Session(conn, opts);
var srv = new http.Server(8000, [
session.api_filter, // use api session filter
{
// routers
'^/foo$': (r) => {
var v = r.session.v;
},
'^/get-token$': session.api_token
}
]);
Sowohl KV-Optionen als auch Session-Optionen befinden sich im selben Objekt.
KV-Store-Optionen
Optionen | Standard | Objekt/Karte | LruCache | LevelDB | Redis | MongoDB | SQLite/MySQL |
---|---|---|---|---|---|---|---|
Tabellenname | „kvs“ | X | X | X | √ | √ | √ |
Schlüsselname | „k“ | X | X | X | X | √ | √ |
Wertname | „v“ | X | X | X | X | √ | √ |
Schlüsselgröße | 32 | X | X | X | X | X | √ |
value_size | 256 | X | X | X | X | X | √ |
cleanup_interval(ms) | 60000 | X | X | X | X | X | √ |
Zeitüberschreitung (ms) | 0 | X | √ | X | √ | √ | √ |
Präfix | „“ | √ | √ | √ | √ | √ | √ |
Zwischenspeicher | FALSCH | √ | √ | √ | √ | √ | √ |
Cachegröße | 65536 | √ | √ | √ | √ | √ | √ |
Cache_Timeout (ms) | 60000 | √ | √ | √ | √ | √ | √ |
Sitzungsoptionen
Optionen | Standard | |
---|---|---|
session_cache_size | 65536 | Maximale Anzahl von Sitzungen im Cache |
session_cache_timeout(ms) | 900000 | Löschen Sie Sitzungsobjekte, die für einen bestimmten Zeitraum nicht bearbeitet wurden, aus dem Puffer, standardmäßig 15 Minuten |
session_cache_delay | 100 | Zeitverzögerung für die Schreibsitzung in den persistenten Speicher |
Sitzungs-ID-Name | "Session-ID" |
- Der Sitzungscache wird verwendet, um die Sitzungskonsistenz zwischen den HTTP-Anforderungen aufrechtzuerhalten.
Das Timeout des Sitzungscache muss größer sein als seine Verzögerung
Auf der Client-Seite gibt es nur die Sitzungs-ID. Die Sitzung wird auf der Server-Seite betrieben.
Methoden
session.setup()
Richten Sie die Backend-Datenbank ein.
v = session.cookie_filter
gibt einen Cookie-basierten Sitzungsfilter zurück.
session.api_filter
gibt einen Header-basierten Sitzungsfilter zurück.
session.api_token
gibt einen API-Handler zurück, der eine neue Sitzungs-ID erhält.
JSON-Web-Token (JWT)
Optionen
Optionen | Standard | |
---|---|---|
session_jwt_algo | Null | siehe jws.ALGORITHMS in fib-jws |
session_jwt_key | Null | Zeichenschlüssel. siehe in fib-jws |
- siehe fib-jws https://github.com/fibjs/fib-jws
- Legen Sie session_jwt_algo und session_jwt_key fest, um JWT zu aktivieren1 2 3// session_jwt_algo is encryption algorithms in fib-jws // session_jwt_key is to verify the signature. var session = new Session(conn, { session_jwt_algo: 'HS256', session_jwt_key: verify_key })
Methoden
session.setTokenCookie
- Legen Sie das JSON-Web-Token im Cookie fest
- sign_key für die Signatur, kann sich je nach Algorithmus von session_jwt_key unterscheiden.
- Gemäß der JSON-Web-Token-Spezifikation kann eine Benutzersitzung nur einmal „setTokenCookie“ aufgerufen werden, um Benutzersitzungsinformationen festzulegen. Die zweite Sitzung löst eine Ausnahme aus: new Error('Das JSON-Web-Token kann nicht geändert werden')
- Standardwert r.session={}1 2 3// sign user info: { id: 12345, name: "Frank" }, and set the cookie // r is request session.setTokenCookie(r, { id: 12345, name: "Frank" }, sign_key)
session.getToken
- Holen Sie sich das Token für den API-Filtermodus, siehe session.api_filter1session.getToken ({ id: 12345, name: "Frank" }, sign_key)