koa-session https://github.com/koajs/session.
http://www.zev23.com/2014/03/koajs-tutorial-authenticate-with_7.html
app.js, .
"use strict"
const
Router = require('koa-router'),
passport = require('./auth'),
session = require('koa-sess'),
redisStore = require('koa-redis'),
koa = require('koa'),
app = koa();
function *reqlogger(next){
console.log('%s - %s %s',new Date().toISOString(), this.req.method, this.req.url);
yield next;
}
app.use(reqlogger);
app.keys=['koa-tutorial'];
app.use(session({
cookie: {maxAge: 1000 * 60 * 5},
store : redisStore()
}));
app.use(passport.initialize());
app.use(passport.session());
app.use(Router(app));
app.get('/', function *(){
console.log('Express-style example');
this.body = "This is root page ('/')";
});
const publicRouter = new Router();
publicRouter.get('/auth/github', passport.authenticate('github', {scope: ['user','repo']}));
publicRouter.get('/auth/github/callback',
passport.authenticate('github', {successReturnToOrRedirect: '/', failureRedirect: '/'})
);
app.use(publicRouter.middleware());
const securedRouter = new Router();
function *authed(next){
if (this.req.isAuthenticated()){
yield next;
} else {
this.session.returnTo = this.session.returnTo || this.req.url;
this.redirect('/auth/github');
}
}
securedRouter.get('/app', authed, function *(){
this.body = 'Secured Zone: koa-tutorial\n' + JSON.stringify(this.req.user, null, '\t');
});
securedRouter.get('/app2', authed, function *(){
this.body = 'Secured Zone: koa-tutorial APP2\n'
});
app.use(securedRouter.middleware());
app.use(function *(){
this.body = 'Hello World';
});
app.listen(3000);