护照本地cookie和会话数据库处理

时间:2020-04-27 00:53:38

标签: node.js express session passport.js passport-local

我当前正在尝试为当前项目设置oauth服务。作为所有这些的新手,我已经阅读了许多关于该主题的文章,但是我仍然缺少一些内容。

我的环境是:

  • 服务器:节点,快递,护照
  • 身份验证:本地策略(使用我自己的帐户/密码)
  • 我有一个包含用户名/密码的数据库(密码通过bcrypt运行)
  • Web界面:做出反应,服务器通过超级代理进行访问

在我的nodejs服务器上,我正在使用以下模块:

  • 表达
  • express-session
  • express-mysql-session
  • 护照
  • 本地护照
  • bcrypt

解决方案的不同部分都在起作用:我可以创建新用户,创建新会话,并在express-mysql-session数据库中查看其内容。

但是我对以下内容感到困惑:

  1. 当我的Web客户端尝试访问受保护的路由时,请求中似乎没有任何cookie。超级代理默认不会发送我的护照cookie吗?我读过某个地方,在单页应用程序中,jwt可能更合适,这与这个问题有关吗?

  2. 尽管阅读了所有内容,但我仍然对deserializeUser感到困惑。我的理解是,使用本地护照解决方案,访问后,Web客户端将发送会话cookie,其中包含会话ID。 Passport将从数据库中获取有关此会话的更多信息,然后继续处理该请求。该会话信息检索是否会自动发生(在express-mysql-session中?)?还是您必须在deserializeUser中“手动”执行此操作(许多示例在其中显示了User.findById调用)?如果您必须“手动”执行操作,这意味着您必须使用不同于该模块使用的连接来访问express-mysql-session db?

  3. 要注销,req.logout()是否足以确保完全从会话数据库中删除会话?

1 个答案:

答案 0 :(得分:0)

我到目前为止发现的答案:

  1. 必须将import winsound songs = ['magenta riddim.wav', 'rescue me.wav'] num = 0 winsound.PlaySound(songs[num], winsound.SND_ASYNC | winsound.SND_ALIAS ) while True: Usr = input("") if Usr == ">": winsound.PlaySound(songs[num+1], winsound.SND_ASYNC | winsound.SND_ALIAS ) num += 1 elif Usr == "<" and num != 0: winsound.PlaySound(songs[num-1], winsound.SND_ASYNC | winsound.SND_ALIAS ) num -= 1 elif Usr == 'stop': winsound.PlaySound(None, winsound.SND_PURGE) else: print('Error!') 方法添加到超级代理,才能使其发送身份验证cookie:
withCredential

在CORS方面,在服务器上,如果使用“ cors” npm模块,则需要“ credentials”选项,例如:

    res = await superagent
      .get(url)
      .withCredentials()
      .send();
  1. 这些模块会自动检索所有会话信息。但是,许多示例显示此调用返回到用户数据库以获取更多信息(权限,其他信息)。目标是避免在两个位置(会话数据库和用户配置文件数据库)具有相同的信息,并且避免这些信息不同步(在关闭帐户等情况下……)

  2. app.use(cors({ origin: ['http://localhost:3003'], methods: 'GET,HEAD,PUT,PATCH,POST,DELETE', credentials: true, })); 断开会话连接,但是会话信息仍保留在数据库中。 以下问题使我步入正轨:how to delete cookie on logout in express + passport js?。您需要使用req.logout,res.session.destroy,并在使用res.clearCookie时删除客户端cookie:

req.logout()

会话已断开连接,数据库已清理,cookie消失了。

相关问题