我已经定义了一个路由``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});
});
答案 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的过程主要分为三个部分:
需要该模块并使用其password.initialize()和 带有express的password.session()中间件。
配置护照 至少使用一种策略并设置护照的serializeUser 和deserializeUser方法。
指定使用 护照。对中间件进行身份验证以实际对用户进行身份验证。