我在 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());
这有效。我的问题是:
passport.authetication
的第一个参数有哪些不同的选项?我在 documentation 中没有看到任何'jwt'
选项。此选项如何影响我传递给
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/