2016-09-23 42 views
0

有没有人找到一种方法与KoaJS一起使用passport-saml?我已经设法找出问题 - 护照saml使用res.send,这是koa中不可用,但我没有任何运气找到一种方法到目前为止..使用passport-saml和Koa?

回答

2

我想知道今天同样的事情,并偶然发现这篇文章。没有基于koa的passport-saml实现,但是,有一个名为koa-passport的整洁中间件模块,它向后兼容旧版护照策略,如passport-saml。它使用模拟快速请求对象来弥补您遇到的这些基于快速中间件的一些差距。

这里的设置(full sample here on github)的一个片段:

// passport.js 
const Saml = require('passport-saml').Strategy, 
     passport= require('koa-passport'); 

passport.serializeUser((user, done) => done(null, user)); 
passport.deserializeUser((user, done) => done(null, user)); 

passport.use(new Saml(config, (profile, done) => done(null, profile) }); 
module.exports = passport; 

登录和回调路线

// app.js 
const app = Koa(); 

app.keys = ['abc']; 

app.use(session({key: 'test.cookie'})); 
app.use(passport.initialize()); 
app.use(passport.session()); 

router.get('/login', passport.authenticate('saml', 
    { 
     successRedirect: '/', 
     failureRedirect: '/login' 
    }) 
); 

router.post('/login/callback', passport.authenticate('saml', 
    { 
     failureRedirect: '/', 
     failureFlash: true 
    }), 
    function *consume() { 
     this.redirect('/'); 
    } 
);