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('/');
});
3条答案
按热度按时间f4t66c6m1#
Passport是用于用户身份验证的nodejs“连接风格中间件”。您最有可能将其视为Express中间件。要使用passport,您需要使用
passport
和一个“策略”,该策略定义了用于身份验证的对象。例如,可以是Facebook或Google(通过oauth、SAML、所以要使用Passport,您需要同时使用require
模块本身 * 和 * 相关的“策略”模块。要使用“strategy”,您需要使用strategy构造函数来configure
passport
。当您第一次遇到passport
时,文档中给出的“local”示例有点迟钝,因此使用Google example可能会使它更容易理解:passport-local
是您在根据“本地”存储的用户名和密码进行身份验证时使用的策略,即存储在应用的数据库中-“本地”表示在应用服务器本地,而不是在终端用户本地。passport-jwt
是使用JSON Web令牌的策略。gr8qqesn2#
passportPassport是Node.js的验证中间件。Passport使用策略的概念来验证请求。策略可以包括验证用户名和密码凭据、使用OAuth的委托验证(例如,通过Facebook或Twitter)或使用OpenID的联合验证。
passport-local本地身份验证策略使用用户名和密码对用户进行身份验证。该策略需要一个verify回调,该回调接受这些凭据并完成提供用户的调用。
passport-jwt此模块允许您使用JSON Web令牌验证端点。它旨在用于保护没有会话的REST风格端点。
ct2axkht3#
可以理解,
passport
是一个基本包passport local
使用本地存储认证,登录成功后使用session
和cookie
维护登录状态passport jwt
使用jwt
认证,该认证适用于api
接口,并且使用token
Authorization
等请求头来维护登录状态