passport.js是Nodejs中的一个做登录验证的中间件,极其灵活和模块化,并且可与Express等Web框架无缝集成。Passport功能单一,即只能做登录验证,但非常强大,支持本地账号验证和第三方账号登录验证(OAuth和OpenID等),支持大多数Web网站和服务。
首先你需要Nodejs,然后数据库用来存储用户数据;另外passport作为中间件,需要依赖Express和Connect.
具体的依赖有:
Express:web框架。或其他支持的框架。
Connect:中间件框架。
cookie-parser:Connect的cookie解析中间件。
express-session:Connect的session解析中间件,依赖于cookie-parser。
express-flash:express的消息提示中间件,可选,但一般情况下都需要装。
你最少需要安装一个passport策略来使用它,一般而言本地验证策略passport-local是必装的。
npm install passport npm install passport-local var express = require('express'); var cookieParser = require('cookie-parser'); var session = require('express-session'); var flash = require('express-flash'); var passport = require('passport'); ... app.use(cookieParser()); app.use(session({...})); app.use(passport.initialize()); app.use(passport.session()); app.use(flash())
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); }); } ));
这里用的是mongodb数据库。
验证回调需要返回验证结果,这是由done()来完成的。
在passport.use()里面,done()有三种用法:
当发生系统级异常时,返回done(err),这里是数据库查询出错,一般用next(err),但这里用done(err),两者的效果相同,都是返回error信息;
当验证不通过时,返回done(null, false, message),这里的message是可选的,可通过express-flash调用;
当验证通过时,返回done(null, user)。
上面的代码里是user.validPassword(password)方法,这并不是passport添加的,而是需要用户自定义。
一般对密码进行哈希和盐化的Nodejs模块是bcrypt,它提供一个compare方法来验证密码,如何使用它则超出本文的范围,这里就不讲了。
session序列化与反序列化
验证用户提交的凭证是否正确,是与session中储存的对象进行对比,所以涉及到从session中存取数据,需要做session对象序列化与反序列化。调用代码如下:
passport.serializeUser(function(user, done) { done(null, user.id); }); passport.deserializeUser(function(id, done) { User.findById(id, function(err, user) { done(err, user); }); });
这里第一段代码是将环境中的user.id序列化到session中,即sessionID,同时它将作为凭证存储在用户cookie中。
第二段代码是从session反序列化,参数为用户提交的sessionID,若存在则从数据库中查询user并存储与req.user中。
我所讲述的passport.js 只是一小部分,详情请看:http://idlelife.org/archives/808
相关推荐
护照 用于身份验证和授权的 Passport.js 示例应用程序 移民 目前项目使用express 3,但需要迁移到express 4
理解Passport.js的工作流程关于Passport.jsPassport.js是Nodejs一个做登录注册的中间件,支持本地验证和第三方账号的登录验证(支持绝大部分社交网站)。组成部分passport.initialize(): 每次请求到来时触发,保证...
passport-oauth2, 用于 Passport 和 node.js的OAuth 2.0认证策略 passport-oauth2 通用 OAuth 2.0认证策略用于 Passport 。这个模块允许你在 node.js 应用程序中使用 OAuth 2.0进行身份验证。 通过插入 Passport,...
nodejs_passport_sample 使用passport.js 身份验证的Node.js/Express.js 4.0 应用程序模板。
演示如何使用 Passport.js 库通过 Azure AD B2C 保护 Node.js Web API 的示例 概述 此示例演示使用库通过Microsoft 标识平台和Azure AD B2C 保护Node.js Web API 。 您将需要一个客户端应用程序来调用 Web API。 ...
:link: 安装将Passport.js应用程序与Magic集成将需要我们的服务器端NPM软件包: # Via NPM:npm install --save passport-magic# Via Yarn:yarn add passport-magic :high_voltage: 快速开始 const passport = ...
passport-http-bearer, 面向 Passport 和 node.js的HTTP承载认证策略 passport-http-bearer 基于HTTP承载认证策略的 Passport 。这个模块允许你使用 RFC 6750插件指定的承载令牌,在你的应用程序中对HTTP请求进行...
ExpressJS 4入门版 使用ExpressJS 4,MongoDB / Mongoose,使用Passport.js进行身份验证,Jade和GruntJS作为任务自动化的轻量级Bootstrap NodeJS应用程序构建安装先决条件Node.js-使用下载并安装Node.js(节点版本...
身份验证器入门 跑步: npm start 这是我们将要构建的: 在用户登录后:
(Next.js :red_heart: MongoDB) :plus: Passport.js 使用 , 和构建的身份验证应用 :rainbow: 放一个 :star: 如果你喜欢 特征 :check_mark: 没有Express.js :check_mark: 无服务器就绪 :check_mark: API路由 :...
nodejs-mysql-passport Node.js Express MySQL护照 开始使用 git clone https://github.com/thisisiron/nodejs-mysql-passport.git npm install npm start
使用Node.js,Express.js,Mongoose,MongoDB,mLab,Node-Mailer,Gmail-API,Passport.js,Express-Handlebars,Bootstrap,jQuery,HTML5和CSS制作而成。 这里有什么新东西? 用户可以创建他们的个人帐户。 ...
NodeJs_PassportJs 使用password.js库登录并进行身份验证
Nodejs示例-使用Node.js + Express.js + Swig + Passport.js + Helmet.js + Gulp进行的简单电子商务,并实现了MVC模式。它是什么? Baconpress是一个模板项目,可与Node.js + Express.js + Swig + Passport.js + ...
express4-passport-mongo 使用express4,passport.js和本地护照作为策略的用户身份验证安装1.克隆此仓库2.npm安装3.确保mongod实例正在运行4.npm install grunt 5.grunt dbseed //将用户添加到mongo数据库6.npm开始7...
Task-CRUD-Passport- ... 注册和身份验证是使用passport.js完成的 ...Nodejs的 表达 闪光 护照 猫鼬 蒙古语 赫鲁库 吉特 HTML,CSS ScreeShots 主页 注册页面 登录页面 所有任务 创建任务 读取,删除任务 更新任务
Node.js的实践(JavaScript框架) 目录 序号 话题 项目名 01。 节点基本介绍项目 NodeCourse 02。 bodyParser,变量路由,URL中的正则表达式,导入自定义模块, NodeProject2 猫鼬,猫鼬,路由器,猫鼬的行为/...
初学者使用passportjs示例的节点身份验证。 克隆 ...2.进入项目目录 cd node_authentication 安装依赖 npm install ...nodejs server 转到 ,您的示例已准备就绪。 做完了 :grinning_face_with_smiling_eyes:
nodejs-passport-postgresql 使用Passport + PostgreSQLNode.js Web应用程序中的一个简单登录示例在使用npm start运行它之前,请不要忘记在项目文件夹中运行npm安装。 有关逐步说明的教程,请访问: : 对于我要教...
该模块使您可以在Node.js应用程序中使用GitHub进行身份验证。 通过插入Passport,可以轻松,毫不费力地将GitHub身份验证集成到任何支持风格中间件(包括应用程序或框架中。 安装 $ npm install passport-github ...