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 - Passport.use 方法不使用 Passport 本地策略在 Node js 中调用

javascript - PassportJS - GET 请求中的登录凭据?

node.js - 当请求包含授权 header 时阻止 Expressjs 创建 session ?

javascript - 如何在 ES6 fat arrow 中编写这个函数?

javascript - 从 EJS 中的日期对象切片时间戳 - Javascript、HTML、Node.js

node.js - 接收 PayPal IPN 时未获取任何参数

node.js - 在 Bluebird 中传递变量的正确方法是什么?

node.js - Mongoose model.find 查询字符串

javascript - 即使我尝试重新连接,socket.io 仍保持断开连接?为什么?

node.js - 将 Passport openID 策略与 JWT 相结合