passport banner

1. Passport

Build Coverage Dependencies Tips

Passport 是适用于 Node.js 身份验证中间件,与 Express 相兼容。

Passport 的唯一目的是验证请求,它通过一系列被称为 策略(strategies) 的可扩展插件进行验证。 Passport 不会安装路由或假定任何特定的数据库模式,这可以最大限度地提高灵活性,并允许开发人员进行应用程序级别的决策。 API 非常简单:您提供 Passport 请求进行身份验证,Passport 提供钩子来控制身份验证成功或失败时发生的情况。

1.1. 赞助

Passport 是由 Rollbar 荣耀赞助的。他们为开发人员提供实时的错误监控、警报和分析。您可以在 https://rollbar.com上免费试用 Rollbar。

1.2. 安装

$ npm install passport

1.3. 用法

策略

Passport 使用策略的概念来认证请求。策略的范围可以从验证用户名和密码凭证,使用 OAuth](http://oauth.net/) 进行委托身份验证(例如通过 FacebookTwitter )或使用 OpenID 的联合身份验证。

在对请求进行身份验证之前,必须配置应用程序使用的策略(或策略s)。

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); }
      if (!user.verifyPassword(password)) { return done(null, false); }
      return done(null, user);
    });
  }
));

这里有 300+ 的策略。找到你想要的: passportjs.org

会话

Passport 将保持持续登录会话。为了使持久性会话正常工作,经过身份验证的用户必须序列化到会话,并在进行后续请求时进行反序列化。

Passport 不会对您的用户记录存储方式施加任何限制。相反,你提供给 Passport 的函数需要实现必要的序列化和反序列化逻辑。在一个典型的应用程序中,这将像序列化用户 ID 一样简单,并在反序列化时通过 ID 查找用户。

passport.serializeUser(function(user, done) {
  done(null, user.id);
});

passport.deserializeUser(function(id, done) {
  User.findById(id, function (err, user) {
    done(err, user);
  });
});

中间件

要在 Express 或基于 Connect 的应用程序中使用 Passport,请使用所需的 passport.initialize() 中间件对其进行配置。 如果您的应用程序使用持久登录会话(建议但不是必需的),则还必须使用 passport.session() 中间件。

var app = express();
app.use(require('serve-static')(__dirname + '/../../public'));
app.use(require('cookie-parser')());
app.use(require('body-parser').urlencoded({ extended: true }));
app.use(require('express-session')({ secret: 'keyboard cat', resave: true, saveUninitialized: true }));
app.use(passport.initialize());
app.use(passport.session());

验证请求

Passport 提供一个 authenticate() 函数,它被用作路由中间件来验证请求。

app.post('/login',
  passport.authenticate('local', { failureRedirect: '/login' }),
  function(req, res) {
    res.redirect('/');
  });

1.4. 策略

Passport 拥有一整套超过 300 种认证策略,包括社交网络、企业集成、API 服务等等。

1.5. 搜索所有策略

passportjs.org 可以进行 策略搜索

下表列出了常用的策略:

策略 协议 开发者
Local HTML form Jared Hanson
OpenID OpenID Jared Hanson
BrowserID BrowserID Jared Hanson
Facebook OAuth 2.0 Jared Hanson
Google OpenID Jared Hanson
Google OAuth / OAuth 2.0 Jared Hanson
Twitter OAuth Jared Hanson
Azure Active Directory OAuth 2.0 / OpenID / SAML Azure

1.6. 示例

1.7. 相关模块

wiki 上的 modules 页面列出了其他有用的模块,这些模块可以构建或集成到 Passport 上。

1.8. 测试

$ npm install
$ make test

1.9. 关于作者

1.10. 支持

这个项目得到了 Auth0 的支持。

1.11. License

The MIT License

Copyright (c) 2011-2015 Jared Hanson [http://jaredhanson.net/](http://jaredhanson.net/)

Copyright © tuzhu008 2017 all right reserved,powered by Gitbook该文件修订时间: 2018-01-01 19:59:57

results matching ""

    No results matching ""