Node.js koa路由器和passport将结果链接到回调中 膝关节炎,我最近从Express迁移到膝关节炎,我的主要问题是关于KOA路由器和护照验证。
回到快车,我可以做一些类似的事情Node.js koa路由器和passport将结果链接到回调中 膝关节炎,我最近从Express迁移到膝关节炎,我的主要问题是关于KOA路由器和护照验证。,node.js,passport.js,koa2,Node.js,Passport.js,Koa2,回到快车,我可以做一些类似的事情 router.route('/someroute') .post(passport.authenticate('local' , {session:false}) , function(req,res,next){req.authresult}); router.post('/someroute',passport.authenticate(..),function(ctx){
router.route('/someroute')
.post(passport.authenticate('local' , {session:false}) ,
function(req,res,next){req.authresult});
router.post('/someroute',passport.authenticate(..),function(ctx){ ctx.user
});
基本上,一旦使用passport策略进行了身份验证,策略中返回的任何对象都将被导入REQ对象,我可以在主控制器函数中访问它。方便吧
这是膝关节炎的治疗方法,A/A:
router.post('/someroute' , function(ctx,next){
return passport.authenticate('jwt' ,(err,user,info,status) =>{
....
})(ctx);
既然已经解释了这种情况,我的问题是:
一,。
有没有可能像express之类的路线
router.route('/someroute')
.post(passport.authenticate('local' , {session:false}) ,
function(req,res,next){req.authresult});
router.post('/someroute',passport.authenticate(..),function(ctx){ ctx.user
});
二,。
如果我没有像这样传递ctx对象,为什么会得到未找到的结果
passport.authenticate(...)(ctx);
将对象放入定义的方法中,这种实现称为什么。。我从哪里了解它?像往常一样,我做了一些研究,准备自己回答这个问题 1.是的,可以像express一样进行路由,而无需声明passport身份验证的自定义回调
router.post('../someroute',passport.authenticate('strategy',options),function(ctx){
//access passport return object through ctx.state.user
}
膝关节炎的缺点是,如果策略返回了一个错误(如错误),错误处理将不会由路由回调来完成,而是会自动响应KOA内部服务器错误。如果希望返回与身份验证相关的错误,则必须通过添加属性的相同ctx.state.user对象执行
2.passport.authenticate()返回一个函数,该函数需要一个req、res/ctx对象,因此不提供该对象,这将导致错误(内部承诺拒绝,未提供ctx)。在上述声明中,router.post会自动处理此问题。但是,在另一个函数中声明此问题需要您通过ctx。对于问题1,我可以链接中间件并通过ctx.state.user访问一个结果。但是如何处理错误和其他参数,没有ctx.state.error