node.js - Nodejs 的 Passport 身份验证选项

标签 node.js passport.js

我在 Nodejs 中使用 Passport 进行身份验证,如下所示:

const passport = require('passport');
passport.use(strategies.jwtLogin); //using require('passport-jwt')  
const requireAuth = passport.authenticate('jwt', {session: false});
app.get('/', requireAuth, (req, res, next) => next());

这有效。我的问题是:

  1. passport.authetication 的第一个参数有哪些不同的选项?我在 documentation 中没有看到任何 'jwt' 选项。

  2. 此选项如何影响我传递给 passport.use 的策略。

换句话说,如果我将 'jwt' 选项更改为 blah 之类的其他选项,我该如何更改策略?

最佳答案

authenticate() 函数的第一个参数只是策略中定义的一个简写名称,用于识别它。因此,如果您要调用authenticate('blah', ...),那么您需要在passport.use() 中定义一个策略,该策略的定义名称为“blah”。

如果你看source code for passport-jwt您将在第 31 行看到这个简写名称已定义。

this.name = 'jwt';

同样,如果您查看另一个策略,例如 passport-local (第 53 行)您将看到它的简写名称。

this.name = 'local';

这种设置方式允许您在同一应用程序中使用多种策略。您可以使用自己的 Passport.use() 语句设置 jwt 和 local,然后使用authenticate('local', ... ) 或authenticate('jwt', ... ) 在代码中单独引用每个语句。

它可以更好地记录在 Passport 文档中,但我希望有所帮助。

关于node.js - Nodejs 的 Passport 身份验证选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49786918/

相关文章:

javascript - nodejs解构变量返回未定义

node.js - 任何用于在 Node.js 中可视化模块依赖关系的库?

java - ant 通过 npm 安装 - 需要 node 0.8.0+ 但安装失败?

node.js - 通过 LinkedIn 登录使用 Passport 对用户进行身份验证

javascript - 如何在http策略的validate方法中访问请求url?

node.js - Sequelize Rest api 多次更新 bool 值

node.js - Express js 模块化 REST 框架

node.js - 我在此代码中的两条路线具有相同的逻辑,但它们的行为不同

node.js - 当 Passport js中的序列化和反序列化调用时

node.js - 了解 Passport.js - 篡改序列化用户