javascript - 如何使用快速 session 作为身份验证处理程序

标签 javascript node.js session express

我正在使用express 4和express-session构建一个简单的登录应用程序。

如果我这样做:

app.use(session({
  store: new MongoStore({ db: 'sess' }),
  secret: 'Ninja Turtle',
  cookie: { path: '/', httpOnly: true, secure: false, maxAge: 3600000 } // 1 hour expiration
}));

所有 http 请求都将流经 session 中间件,访问者将在访问的第一个路由处获得一个空 session 和一个 key cookie。该路由是否需要身份验证并不重要。它可能是登录页面。

关于处理身份验证,我的第一个想法是检查请求的 session 是否存在,如果 true = 访问者已登录。但是,当访问者仅通过访问任何路由来获取他的(空) session 时,这似乎不合理。

我是否应该以某种方式将 session 中间件仅添加到某些路由,以便访问者不会仅通过访问任何路由就获得空 session ?

或者向经过身份验证的 session 添加属性是否更好,如下所示:logged_in: true

现在我对像Passwordjs之类的中间件解决方案不感兴趣,因为我想从下往上了解它是如何工作的。

最佳答案

我刚刚做了您在帖子中描述的操作,一个带有存储 session 的登录应用程序(在我的例子中是 Redis)。

每个用户都有一个 session 是正常的。 因此,我不会考虑仅对某些路由启用 session 中间件,因为将来您可能希望使用用户的 session ,即使对于未登录的用户也是如此。

就我而言,我只是将 session 内的一个属性设置为 true

if ( YourLogInCondition ) {
  req.session.logged = true;
  //rest of login action
}

这可能不是最好的方法,但这就是我所做的。

希望有帮助。

干杯

关于javascript - 如何使用快速 session 作为身份验证处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24138035/

相关文章:

javascript - jquery 模态对话框 seo 友好

JavaScript:getComputedStyle 浏览器之间的返回值不一致

javascript - 垂直轮播循环中的 jQuery mouseenter/hover stop 动画

javascript - 如果只有本地 Angular 应用程序调用它为真 Controller ,则执行路由

javascript - app.use(path, router) 匹配,但如何提取路径中的命名参数

java - Spring mvc 4 并发 session 控制

javascript - 编写可测试的 JavaScript 代码

javascript - 如何速记检查未定义?

authentication - 我的 Web App 可以实现用户登录并保持无状态吗?

php - session 劫持和 PHP