大佬教程收集整理的这篇文章主要介绍了node.js – 使用范围保护API(oauth2orize,passport,express,Nodejs),大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
oauth2orize令牌hander-outer:
server.exchange(oauth2orize.exchange.password(function (client,username,password,scope,donE) { scope = scope || ['unauthorized']; db.collection('oauth_users').findOne({username: usernamE},function (err,user) { if (err) return done(err); if (!user) return done(null,falsE); for (i in scopE) if(user.scope.indexOf(scope[i]) < 0) return done(null,falsE); bcrypt.compare(password,user.password,res) { if (!res) return done(null,falsE); var token = utilS.Uid(256) var refreshToken = utilS.Uid(256) var tokenHash = crypto.createHash('sha1').update(token).digest('hex') var refreshTokenHash = crypto.createHash('sha1').update(refreshToken).digest('hex') var expirationDate = new Date(new Date().getTime() + (3600 * 1000)) db.collection('oauth_access_tokens').save({token: tokenHash,expirationDate: expirationDate,clientId: client.clientId,userId: username,scope: scopE},function (err) { if (err) return done(err) db.collection('oauth_refresh_tokens').save({refreshToken: refreshTokenHash,userId: usernamE},function (err) { if (err) return done(err) done(null,token,refreshToken,{expires_in: expirationDatE}) }) }) }) }) }))
护照持票人令牌检查员:
passport.use("accessToken",new BearerStrategy( {passReqToCallBACk: truE},function (req,accessToken,donE) { console.dir(req.params); var accessTokenHash = crypto.createHash('sha1').update(accessToken).digest('hex') db.collection('oauth_access_tokens').findOne({token: accessTokenHash},token) { if (err) return done(err); if (!token) return done(null,falsE); if (new Date() > token.expirationDatE) { db.collection('oauth_access_tokens').remove({token: accessTokenHash},function (err) { done(err) }); } else { db.collection('oauth_users').findOne({username: token.userID},user) { if (err) return done(err); if (!user) return done(null,falsE); // no use of scopes for no var info = { scope: '*' } done(null,user,info); }) } }) }))
API安全性:
router.get('/reStricted',passport.authenticate('accessToken',{ scope: "unauthorized",session: false }),res) { res.send("ReStricted Function");})
我找不到访问passport.authenticate中传递给passport.use的“范围”选项的示例.我以为它是在req对象中,但我找不到它.有帮助吗?
以上是大佬教程为你收集整理的node.js – 使用范围保护API(oauth2orize,passport,express,Nodejs)全部内容,希望文章能够帮你解决node.js – 使用范围保护API(oauth2orize,passport,express,Nodejs)所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。