NodeJS “passport”、“passport-local”和“passport-jwt”之间有什么区别?

uelo1irk  于 2023-01-30  发布在  Node.js
关注(0)|答案(3)|浏览(248)

我正在学习NodeJS,在教程中看到了这三个函数/类,但不明白它们是什么,什么时候应该使用哪一个?
我需要同时使用passport-local和passport-jwt还是只使用其中一种?

f4t66c6m

f4t66c6m1#

Passport是用于用户身份验证的nodejs“连接风格中间件”。您最有可能将其视为Express中间件。要使用passport,您需要使用passport和一个“策略”,该策略定义了用于身份验证的对象。例如,可以是Facebook或Google(通过oauth、SAML、所以要使用Passport,您需要同时使用require模块本身 * 和 * 相关的“策略”模块。
要使用“strategy”,您需要使用strategy构造函数来configurepassport。当您第一次遇到passport时,文档中给出的“local”示例有点迟钝,因此使用Google example可能会使它更容易理解:

var passport = require('passport'); // passport
var GoogleStrategy = require('passport-google-oauth').OAuth2Strategy; // Youa also need to import the Google 'strategy'

// configure passport to use the Google strategy by passing the GoogleStrategy constructor to passport.use()
passport.use(new GoogleStrategy({
    clientID: GOOGLE_CLIENT_ID,
    clientSecret: GOOGLE_CLIENT_SECRET,
    callbackURL: "http://www.example.com/auth/google/callback"
  },
  function(accessToken, refreshToken, profile, done) {
       User.findOrCreate({ googleId: profile.id }, function (err, user) {
         return done(err, user);
       });
  }
));

// now you can use passport.authenticate() with the google strategy
app.get('/auth/google',
  passport.authenticate('google', { scope: ['https://www.googleapis.com/auth/plus.login'] }));

// GET /auth/google/callback which Google send your user to after they authenticate using Oauth
app.get('/auth/google/callback', 
  passport.authenticate('google', { failureRedirect: '/login' }),
  function(req, res) {
    res.redirect('/');
  });

passport-local是您在根据“本地”存储的用户名和密码进行身份验证时使用的策略,即存储在应用的数据库中-“本地”表示在应用服务器本地,而不是在终端用户本地。
passport-jwt是使用JSON Web令牌的策略。

gr8qqesn

gr8qqesn2#

passportPassport是Node.js的验证中间件。Passport使用策略的概念来验证请求。策略可以包括验证用户名和密码凭据、使用OAuth的委托验证(例如,通过Facebook或Twitter)或使用OpenID的联合验证。
passport-local本地身份验证策略使用用户名和密码对用户进行身份验证。该策略需要一个verify回调,该回调接受这些凭据并完成提供用户的调用。
passport-jwt此模块允许您使用JSON Web令牌验证端点。它旨在用于保护没有会话的REST风格端点。

ct2axkht

ct2axkht3#

可以理解,passport是一个基本包

  • passport local使用本地存储认证,登录成功后使用sessioncookie维护登录状态
  • passport jwt使用jwt认证,该认证适用于api接口,并且使用tokenAuthorization等请求头来维护登录状态

相关问题