有没有人找到一种在 KoaJS 中使用 passport-saml 的方法?我已经设法确定了这个问题——passport-saml 使用 res.send,这在 koa 中不可用,但到目前为止我还没有找到解决方法。
问问题
473 次
1 回答
3
我今天也在想同样的事情,偶然发现了这篇文章。没有基于 koa 的 passport-saml 实现,但是,有一个简洁的中间件模块koa-passport
,称为向后兼容旧的护照策略,例如passport-saml
. 它使用模拟 express 请求对象来弥补您在使用这些基于 express 的中间件时遇到的一些差距。
这是设置的片段(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('/');
}
);
于 2016-10-05T05:31:35.033 回答