我在Nodejs中使用护照进行身份验证,如下所示:
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
之类的其他内容,我该如何更改策略?
答案 0 :(得分:1)
authenticate()函数的第一个参数只是在策略中定义的简写名称,用于标识它。因此,如果您打算调用authenticate('blah',...),那么您需要在passport.use()中定义一个策略,其定义名称为“blah”。
如果你看一下你在第31行看到的source code for passport-jwt,就会定义这个简写名称。
this.name = 'jwt';
同样,如果您查看另一个策略,例如passport-local(第53行),您会看到它的简写名称。
this.name = 'local';
这样设置允许您在同一个应用程序中使用多个策略。您可以使用自己的passport.use()语句设置jwt和local,然后使用authenticate('local',...)或authenticate('jwt',...)在代码中稍后单独引用它们。
可以在护照文档中更好地记录,但我希望有所帮助。