Nodejs的Passport认证选项

3
我将使用护照来进行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());

这个可以工作。我的问题是:

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

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

换句话说,如果我将'jwt'选项更改为其他内容,例如blah,我应该如何更改策略?

1个回答

1
“authenticate()”函数的第一个参数是在策略中定义的简称,用于识别它。因此,如果您要调用 authenticate('blah', ...) 函数,则需要在 passport.use() 中定义一个名为“blah”的策略。
如果您查看passport-jwt 的源代码,则会在第31行看到定义了这个简称。
this.name = 'jwt';

同样,如果您查看另一种策略,比如passport-local(第53行),您会看到它的简称。
this.name = 'local';

这样设置是为了让您在同一应用程序中使用多个策略。 您可以使用自己的passport.use()语句设置jwt和本地身份验证,并在稍后的代码中通过使用authenticate('local',...)或authenticate('jwt',...)来分别引用它们。

可能在护照文档中有更好的说明,但我希望这可以帮助您。


1
没问题。Passport非常强大,但文档还有些不足。如果有疑问,不要害怕查看源代码......它没有人们想象的那么复杂。 - AkinsTech

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接