在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:robin98sun/koa-jwt-redis-session开源软件地址:https://github.com/robin98sun/koa-jwt-redis-session开源编程语言:JavaScript 100.0%开源软件介绍:#JWT Redis Session for Koa 2 Pure JWT implementation using Redis as session storage for Koa 2, without any cookies Quick StartAs middleware: const koa = require('koa'),
bodyParser = require('koa-bodyparser'),
session = require('koa-jwt-redis-session')
// import session from 'koa-jwt-redis-session'
const app = new koa()
app.use(bodyParser())
app.use(session.default())
// If using import
// app.use(session())
app.use(async function(ctx, next){
let views = ctx.session.views || 0
ctx.session.views = ++views
try{
ctx.body = {views: ctx.session.views}
await next()
}catch(ex){
console.error('something wrong:', ex)
ctx.status = 500
ctx.body = 'something wrong'
}
})
app.listen(3333) As a function: // After used as middleware
// Somewhere when using as backdore
import {createSession, authoriseRequest} from 'koa-jwt-redis-session'
let openDoorHandler = async (ctx, next)=>{
let userObj = {account: 'sneaky', password: 'open_the_back_door'};
let token = await createSession(ctx, userObj);
ctx.body = token;
// Token is in JSON format: {token: ..... , expiresIn: 3600}
// expiresIn is the expire time in seconds, default is 3600
}
let guardHandler = async (ctx, next)=>{
let user = await authoriseRequest(ctx);
if( user != undefined){
ctx.body = user;
}else{
ctx.throw(new Error('Unauthorized'));
}
} OptionsWhen creating session instance, you can pass in an option object const sessionOptions = {
// ......
}
app.use(session.default(sessionOptions))
// If using import
app.use(session(sessionOptions)) Here is the default option values{
jwt: {
contentType: 'application/json',
charset: 'utf-8',
secret: 'koa-jwt-redis-session' + new Date().getTime(),
authPath: '/authorize',
registerPath: '/register',
refreshTokenPath: '/refreshToken',
expiresIn: 3600,
accountKey: 'account',
passwordKey: 'password',
authHandler: function (account, password) {
if (account && password) {
let user = {};
user[accountKey] = account;
return user;
}
else return false;
},
registerHandler: function (account, password) {
if (account && password) {
let user = {};
user[accountKey] = account;
return user;
}
else return false;
}
},
session: {
sessionKey: 'session',
sidKey: 'koa:sess',
},
redis: {
port: 6379,
host: '127.0.0.1',
db: 0,
ttl: 3600,
options: {}
}
} Action flow
Enjoy! |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论