1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基本用法.pdf

基本⽤法 passport⽤的⽐较多的有local本地验证和OAuth验证,这⾥讲⼀下两者的使⽤。 你也可以看看张丹写的这两篇,Express结 Passport实现登陆认证和Passport实现社交 ⽹络OAuth登陆,⾥⾯的⽰例覆盖了基本的⽤法,本⽂也参考了其中的⼀些例⼦。 local本地验证 配置策略 usernameField 验证回调 密码验证 session序列化与反序列化 Authenticate验证 HTTP request操作 完整⽰例 OAuth验证 OAuth验证流程 OAuth 1.0 OAuth2.0 使⽤passport-x插件 OAuth验证的逻辑 local本地验证 本地验证默认使⽤⽤户名和密码来进⾏验证。 配置策略 在做验证之前,⾸先需要对策略进⾏配置,官⽅的⽰例如下: var passport = require('passport') , LocalStrategy = require('passport-local').Strategy; passport.use(new LocalStrategy( function(username, password, done) User.findOne( username: username }, function(err, user) if (err) return done(err); } if (!user) return done(null, false, message: '⽤户名不存在.' }); } if (!user.validPassword(password)) return done(null, false, message: '密码不匹配.' }); } return done(null, user); }); } )); 其中的User.findOne()是Mon oDB风格的语法,意思是从数据库的User集 中查 询⼀条数据,第⼀个参数是查询条件,后⾯是callback ,⼀般在callback 中进⾏后续操 作。 这⾥的逻辑很简单,依次检查username、password,如果出错则返回错误信息, 如果通过则返回done(null,user)。 usernameField 前⾯说过passport默认使⽤⽤户名和密码来验证,但实际上也有很多需要⽤邮箱来验证 的,那么如何实现呢? passport在策略配置⾥提供了options参数,⽤来设置你要验证的字段名称,即 usernameField ,使⽤⽅法如下: passport.use(new LocalStrategy( usernameField: 'email', passwordField: 'passwd' }, function(username, password, done) // ... } )); 注意,这⾥的字段名称应该是页⾯表单提交的名称,即req .body .xxx ,⽽不是user数据 库中的字段名称。 将options作为LocalStrate y第⼀个参数传⼊即可。 验证回调 passport本⾝不处理验证,验证⽅法在策略配置的回调函数⾥由⽤户⾃⾏设置,它又称 为验证回调。验证回调需要返回验证结果,这是由done()来完成的。 在passport .use()⾥⾯,done()有三种⽤法: 当发⽣系统级异常时,返回done(err) ,这⾥是数据库查询出错,⼀般⽤ next(err) ,但这⾥⽤done(err) ,两者的效果相同,都是返回error信息; 当验证不通过时,返回done(null , false , messa e) ,这⾥的messa e是可选的,可

文档评论(0)

牛X文档 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档