Research
Security News
Malicious npm Package Targets Solana Developers and Hijacks Funds
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
koa-session2-redis
Advanced tools
Fork from koa-session2; Middleware for Koa2 to get/set session use with custom stores such as Redis or mongodb
Middleware for Koa2 to get/set session use with custom stores such as Redis or mongodb
Use native ES6(async/await) by Nodejs v7.6.0 +
Or you can use the old versions:
node v7.6 +
npm install koa-session2
const Koa = require("koa");
const session = require("koa-session2");
const app = new Koa();
app.use(session({
key: "SESSIONID", //default "koa:sess"
}));
Store.js
const Redis = require("ioredis");
const { Store } = require("koa-session2");
class RedisStore extends Store {
constructor() {
super();
this.redis = new Redis();
}
async get(sid, ctx) {
let data = await this.redis.get(`SESSION:${sid}`);
return JSON.parse(data);
}
async set(session, { sid = this.getID(24), maxAge = 1000000 } = {}, ctx) {
try {
// Use redis set EX to automatically drop expired sessions
await this.redis.set(`SESSION:${sid}`, JSON.stringify(session), 'EX', maxAge / 1000);
} catch (e) {}
return sid;
}
async destroy(sid, ctx) {
return await this.redis.del(`SESSION:${sid}`);
}
}
module.exports = RedisStore;
main.js
const Koa = require("koa");
const session = require("koa-session2");
const Store = require("./Store.js");
const app = new Koa();
app.use(session({
store: new Store()
}));
app.use(ctx => {
let user = ctx.session.user;
ctx.session.view = "index";
});
Most options based on cookies
key
: a string for store session id in cookie
store
: a class for custom store (extend {Store}, func: #get(sid), #set(session, opts), #destory(sid))
maxAge
: a number representing the milliseconds from Date.now()
for expiry
expires
: a Date
object indicating the cookie's expiration date (expires at the end of session by default).
path
: a string indicating the path of the cookie (/
by default).
domain
: a string indicating the domain of the cookie (no default).
secure
: a boolean indicating whether the cookie is only to be sent over HTTPS (false
by default for HTTP, true
by default for HTTPS).
httpOnly
: a boolean indicating whether the cookie is only to be sent over HTTP(S), and not made available to client JavaScript (true
by default).
signed
: a boolean indicating whether the cookie is to be signed (false
by default). If this is true, another cookie of the same name with the .sig
suffix appended will also be sent, with a 27-byte url-safe base64 SHA1 value representing the hash of cookie-name=cookie-value against the first Keygrip key. This signature key is used to detect tampering the next time a cookie is received.
overwrite
: a boolean indicating whether to overwrite previously set cookies of the same name (false
by default). If this is true, all cookies set during the same request with the same name (regardless of path or domain) are filtered out of the Set-Cookie header when setting this cookie.
MIT
FAQs
Fork from koa-session2; Middleware for Koa2 to get/set session use with custom stores such as Redis or mongodb
We found that koa-session2-redis demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
Security News
Research
Socket researchers have discovered malicious npm packages targeting crypto developers, stealing credentials and wallet data using spyware delivered through typosquats of popular cryptographic libraries.
Security News
Socket's package search now displays weekly downloads for npm packages, helping developers quickly assess popularity and make more informed decisions.