我正在使用护照在Node.js中进行身份验证,如下所示:

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',...),则需要在您的password.use()中定义一个策略,该策略的定义名称为“ blah”。

如果查看source code for passport-jwt,您将在第31行看到该快捷方式名称已定义。

this.name = 'jwt';


同样,如果您查看其他策略,例如passport-local(第53行),则会看到它的简写名称。

this.name = 'local';


通过这种方式进行设置,使您可以在同一应用程序中使用多种策略。您可以使用自己的password.use()语句设置jwt和local,然后在以后的代码中使用authenticate('local',...)或authenticate('jwt',...)分别引用它们。

最好在护照文档中记录下来,但我希望能有所帮助。

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

10-15 14:24