无法理解password.initialize()中间件的要求

时间:2019-06-14 00:58:24

标签: express authentication oauth-2.0 passport.js google-oauth

我已经定义了一个路由``auth / google''来负责使用google登录应用。同意屏幕出现用于登录(不需要passport.initialize())。我已将回调网址定义为``auth / google / callback''也是。为什么我得到未使用的错误中间件(passport.initialize())

// using pasport.authenticate for authenicate the request (no error for  not using passport.initialize())

app.get('/auth/google' , passport.authenticate('google',{
scope: ['profile','email'] 
}) 

// got error after writing below code

app.get('/auth/google/callback' , passport.authenticate('google'),(req,res)=>{
 res.json({"a":97});
});

1 个答案:

答案 0 :(得分:0)

在基于Connect或Express的应用程序中,需要使用password.initialize()中间件来初始化Passport。如果您的应用程序使用持久性登录会话,则还必须使用password.session()中间件。

app.configure(function() {
  app.use(express.static('public'));
  app.use(express.cookieParser());
  app.use(express.bodyParser());
  app.use(express.session({ secret: 'keyboard cat' }));
  app.use(passport.initialize());
  app.use(passport.session());
  app.use(app.router);
});

passport.initialize()是用于初始化Passport的中间件。

中间件是可以访问请求对象(req),响应对象(res)和应用程序请求-响应周期中的下一个中间件功能的函数。

Passport是用于对请求进行身份验证的Node的身份验证中间件。

  

基本上,passport.initialize()初始化身份验证   模块

如果您阅读了passport.js docs configure section,就会知道初始化是注册身份验证模块的第一步。

还要对Passport身份验证模块的流程进行评论

使用passport.js的过程主要分为三个部分:

  1. 需要该模块并使用其password.initialize()和 带有express的password.session()中间件。

  2. 配置护照     至少使用一种策略并设置护照的serializeUser     和deserializeUser方法。

  3. 指定使用     护照。对中间件进行身份验证以实际对用户进行身份验证。