Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js “passport”、“passport local”和“passport jwt”之间有什么区别?_Node.js_Express_Passport.js_Passport Local_Passport Jwt - Fatal编程技术网

Node.js “passport”、“passport local”和“passport jwt”之间有什么区别?

Node.js “passport”、“passport local”和“passport jwt”之间有什么区别?,node.js,express,passport.js,passport-local,passport-jwt,Node.js,Express,Passport.js,Passport Local,Passport Jwt,我试图学习NodeJS,并在教程中看到了这三个函数/类,但无法理解它们是什么,何时应该使用哪一个?passport passport是Node.js的身份验证中间件。passport使用策略的概念来验证请求。策略包括验证用户名和密码凭据、使用OAuth(例如,通过Facebook或Twitter)进行委托身份验证,或使用OpenID进行联合身份验证 passport local本地身份验证策略使用用户名和密码对用户进行身份验证。该策略需要一个verify回调,它接受这些凭证,并在提供用户的情况下

我试图学习NodeJS,并在教程中看到了这三个函数/类,但无法理解它们是什么,何时应该使用哪一个?

passport passport是Node.js的身份验证中间件。passport使用策略的概念来验证请求。策略包括验证用户名和密码凭据、使用OAuth(例如,通过Facebook或Twitter)进行委托身份验证,或使用OpenID进行联合身份验证

passport local本地身份验证策略使用用户名和密码对用户进行身份验证。该策略需要一个verify回调,它接受这些凭证,并在提供用户的情况下完成调用

passport jwt此模块允许您使用JSON web令牌对端点进行身份验证。它旨在用于在没有会话的情况下保护RESTful端点。

是用于用户身份验证的nodejs“连接式中间件”。您很可能将其视为中间件。要使用passport,您需要使用passport和一个“策略”,定义您使用什么进行身份验证。例如,可以通过oauth、SAML或简单的cookies访问Facebook或Google。因此,要使用Passport,您需要Passport模块本身和相关的“策略”模块

要使用“策略”,请使用策略构造函数配置passport。当您第一次看到passport时,文档中给出的“本地”示例有点迟钝,因此使用可能会让您更容易理解:

var passport=需要“passport”;//护照 var GoogleStrategy=require'passport-google-oauth'.OAuth2Strategy;//Youa还需要导入谷歌的“战略” //通过将GoogleStrategy构造函数传递给passport.use,将passport配置为使用Google策略 passport.Use谷歌新战略{ clientID:GOOGLE\u客户端\u ID, clientSecret:GOOGLE\u CLIENT\u SECRET, 回调URL:http://www.example.com/auth/google/callback }, functionaccessToken,refreshToken,配置文件,完成{ User.findOrCreate{googleId:profile.id},函数err,用户{ 返回doneerr,用户; }; } ; //现在,您可以使用passport.authenticate和google策略 app.get'/auth/google', passport.authenticate'google',{scope:['https://www.googleapis.com/auth/plus.login'] }; //获取/auth/google/callback,在用户使用Oauth进行身份验证后,google会将用户发送给它 app.get'/auth/google/callback', passport.authenticate'google',{failureRedirect:'/login'}, 函数请求,res{ res.重定向“/”; }; 是您根据“本地”存储的用户名和密码(即在应用程序的数据库中)进行身份验证时使用的策略-“本地”表示应用程序服务器的本地,而不是最终用户的本地


是使用JSON Web令牌的策略。

我们应该在哪里使用其中的哪一个?如果您想要一个系统将用户安全地登录到在nodejs上运行的Web应用程序,您可以使用passport—通常这可能是一个应用程序。您始终需要passport加上其中一个,这取决于您希望如何验证您的用户以及是否要存储他们的凭据。正如@divyani在另一个答案中所说,JWT通常用于API端点,我们应该在哪里使用它们?因此passport JWT可以用于无会话的安全RESTful端点,passport local可以用于在任何Node.js应用程序中使用用户名和密码进行身份验证。passport-JWT:var opts={}opts.jwtFromRequest=ExtractJwt.fromAuthHeadersBeareToken;opts.secretrokey='secret';opts.issuer='accounts.examplesoft.com';opts.viewer='yoursite.net';passport.usenew JwtStrategyopts,functionjwt_payload,done{User.findOne{id:jwt_payload.sub},functionerr,User{if err{return doneerr,false;}if User{return donenull,User;}else{return donenull,false;//或者您可以创建一个新帐户} }; };passport local:passport.usenew LocalStrategy functionusername,password,done{User.findOne{username:username},function err,User{if err{return doneerr;}if!User{return donenull,false;}if!User.verifyPasswordpassword{return donenull,false;}return donenull,User;};};