fib-sessie
Sessie-middleware voor fibjs
Installeren
1npm install fib-session [--save]
Test
1npm run ci
Een op cookies gebaseerde sessie-middleware maken
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;
},
...
}
]);
Een API-sessie-middleware maken
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
}
]);
Zowel kv-opties als sessie-opties bevinden zich in hetzelfde object.
kv-store-opties
opties | standaard | object/kaart | LruCache | NiveauDB | Opnieuw | MongoDB | SQLite/MySQL |
---|---|---|---|---|---|---|---|
tafel naam | "kvs" | X | X | X | √ | √ | √ |
sleutelnaam | "k" | X | X | X | X | √ | √ |
waarde_naam | "v" | X | X | X | X | √ | √ |
sleutel_grootte | 32 | X | X | X | X | X | √ |
waarde_grootte | 256 | X | X | X | X | X | √ |
opschoningsinterval(ms) | 60000 | X | X | X | X | X | √ |
time-out (ms) | 0 | X | √ | X | √ | √ | √ |
voorvoegsel | "" | √ | √ | √ | √ | √ | √ |
cache | vals | √ | √ | √ | √ | √ | √ |
cache grootte | 65536 | √ | √ | √ | √ | √ | √ |
cache_timeout(ms) | 60000 | √ | √ | √ | √ | √ | √ |
sessie opties
opties | standaard | |
---|---|---|
sessie_cache_grootte | 65536 | maximaal aantal sessies in cache |
session_cache_timeout(ms) | 900000 | sessieobjecten wissen die gedurende een bepaalde periode niet vanuit de buffer worden gebruikt, standaard 15 minuten |
session_cache_delay | 100 | tijdsvertraging voor schrijfsessie naar permanente opslag |
sessie_id_naam | "sessieID" |
- sessiecache wordt gebruikt om sessieconsistentie tussen http-vereisten te behouden.
de time-out van de sessiecache moet groter zijn dan de vertraging
De clientzijde heeft alleen het sessie-ID, de sessie wordt aan de serverzijde uitgevoerd.
Methoden
session.setup()
stel de backend-database in.
v = session.cookie_filter
retourneert een op cookies gebaseerd sessiefilter.
session.api_filter
retourneert een op headers gebaseerd sessiefilter.
session.api_token
retourneert een API-handler die een nieuwe sessie-ID krijgt.
JSON-webtoken (JWT)
opties
opties | standaard | |
---|---|---|
session_jwt_algo | nul | zie jws.ALGORITMEN in fib-jws |
session_jwt_key | nul | tekensleutel, zie in fib-jws |
- zie fib-jws https://github.com/fibjs/fib-jws
- stel session_jwt_algo en session_jwt_key in om JWT in te schakelen1 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
- stel het JSON Web Token in cookie in
- sign_key voor handtekening, kan verschillen van session_jwt_key, afhankelijk van het algoritme.
- Volgens de JSON Web Token-specificatie kan één gebruikerssessie slechts één keer setTokenCookie worden genoemd voor ingestelde gebruikerssessie-informatie. De tweede genereert een uitzondering: new Error('Can't wijzigingen the JSON Web Token')
- standaardwaarde 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
- krijg een token voor de API-filtermodus, zie session.api_filter1session.getToken ({ id: 12345, name: "Frank" }, sign_key)