node.js - 只有在 express 中成功验证后才创建 session

标签 node.js session authentication express sessionid

我有一个要求,只有在身份验证成功后才能创建一个 session 。

我能够使用 express 中间件创建基于 redisStore 的 session ,但它会在第一个请求到达服务器时创建 session 。

但是我如何才能在成功验证后才创建 session 。 我在谷歌上搜索了一下,找到了req.session.regenerate()(但我发现这个线程中提到的问题如下: Regenerate session IDs with Nodejs Connect )

但在重新生成的情况下,它也会创建一个新的,假设旧的已经创建,并且是使用相同的参数创建的。

那么有没有其他方法可以在成功验证后创建一个新的 session ID..?

最佳答案

您可能将 session 的概念与已验证 session 的概念混为一谈。

所有用户都有一个 session 是正常的 - 即使是匿名的、尚未登录的用户也是如此。这与经过身份验证的 session 之间的区别仅在于,在您的本地网络服务器上,您指定特定用户已经过身份验证。

例如,一旦您对某人进行身份验证,您可以设置:

req.session.isAuthenticated = true;

然后,在呈现页面时,您的 Controller 可以执行类似的操作

function(req, res, next) {
  if (!req.session.isAuthenticated) return res.redirect('/login');
  res.render('appPage');
}

关于node.js - 只有在 express 中成功验证后才创建 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14555270/

相关文章:

php - MySQL 连接和 PHP session 的 Ajax 问题

node.js - 使用模拟模块在 Nodejs 中测试 Express Route

javascript - 如何在循环中对一堆查询进行排序?

javascript - 类似于 Puppeteer 中的 document.ready() 的功能?

java - 在 Spring 中,如何获取其凭据不属于当前 http 请求一部分的当前用户?

php认证/数据库代码风格

node.js - 为 restify.js 实现基于 token 的身份验证的最佳方法是什么?

Node.js/ express : async function inside middleware?

python - 从数据库或 session 数据填充字段的正确方法是什么?

c# - 在 Azure 上的 ASP.NET 中缓存 WCF ChannelFactory 或客户端代理?