Session library that uses JSON Web Token and cookies
yarn add fusion-plugin-jwt
// src/main.js
import React from 'react';
import App from 'fusion-react';
import JWTSession from 'fusion-plugin-jwt';
import PageViewCounter from './page-view-counter';
export default () => {
const app = new App(<div></div>);
const Session = app.plugin(JWTSession, {secret: __NODE__ && 'secret-key-goes-here'});
app.plugin(PageViewCounter, {Session});
return app;
}
// src/page-view-counter.js
import html from 'fusion-core';
export default ({Session}) => (ctx, next) => {
const session = Session.of(ctx);
const count = (session.get('count') || 0) + 1;
session.set('count', count);
ctx.body.body.push(html`You viewed this page ${count} times`);
return next();
}
const Session = app.plugin(JWTSession, {secret});
secret: string
- Encryption secret for JWTs. Required in server, required to be falsy in client.cookieName: string
- Cookie name. Optional. Defaults tofusion-sess
expiresIn: number
- Time in seconds until session/cookie expiration. Defaults to86400
(24 hours)
const session = Session.of(ctx);
const value = session.set(key, val);
key: string
- Requiredval: Object|Array|string|number|boolean
- A serializable value. Requiredvalue: any
- Returnsval
const value = session.set(key);
key: string
- Requiredvalue: any
Note that there's a storage limit of ~4kb since data is stored in the cookie.