Node.js Node passport.js身份验证,无需直接将用户保存到数据库

Node.js Node passport.js身份验证,无需直接将用户保存到数据库,node.js,authentication,passport.js,Node.js,Authentication,Passport.js,我已经在谷歌上搜索了将近两周,仍然没有找到解决问题的方法 我有以下情况: 用户通过注册表(电子邮件、密码、确认密码)进行注册 PassportJS验证用户(检查数据库中是否已经存在电子邮件) 问题是: 所有示例都显示了如果数据库中不存在用户,如何创建、保存一个用户,并在save回调中调用done(null,newUser)。(我不要这个) 我真正需要的是将用户保存在会话中,然后重定向到另一个表单,在那里他可以添加姓名、国家和完成注册。 如何在不丢失passport中的req.user的情况下执行

我已经在谷歌上搜索了将近两周,仍然没有找到解决问题的方法

我有以下情况:

  • 用户通过注册表(电子邮件、密码、确认密码)进行注册

  • PassportJS验证用户(检查数据库中是否已经存在电子邮件)

  • 问题是:

    所有示例都显示了如果数据库中不存在用户,如何创建、保存一个用户,并在save回调中调用done(null,newUser)。(我不要这个)

    我真正需要的是将用户保存在会话中,然后重定向到另一个表单,在那里他可以添加姓名、国家和完成注册。 如何在不丢失passport中的req.user的情况下执行此操作?我需要2个本地策略吗?一个用于验证电子邮件不存在,第二个用于实际将新注册用户保存到数据库并创建req.user对象


  • 问题是当我设置Facebook策略
    passport.use(新FacebookStrategy({clientID:facebookAuth.appId,clientSecret:facebookAuth.secret,callbackURL:facebookAuth.callback},函数(令牌,刷新令牌,配置文件,完成){
    我没有访问请求对象的权限,无法将facebook信息放入会话中…您可以通过自定义passport配置来实现这一点,但在我询问之前:是否有任何理由再次使用特殊属性在数据库中保存未完成的用户(例如
    未完成:true
    )指示其状态,以便禁用使用此配置文件登录?当用户完成注册时,您可以更新用户并将其标记为已完成。这是我最初的想法,但与我的团队讨论后,我们决定不希望数据库中存在未完成的注册。应该只有两种状态:已注册和未注册stered.
    passReqToCallback:true
    应该可以。