【问题标题】:How using express-session as authentication handler如何使用 express-session 作为身份验证处理程序
【发布时间】:2014-06-10 19:50:21
【问题描述】:

我正在使用 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 请求都将通过会话中间件,访问者将在他们访问的第一个路由处获得一个空会话和一个关键 cookie。这条路由是否需要身份验证都没有关系。可能是登录页面。

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

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

或者向经过身份验证的会话添加属性更好,例如:logged_in: true

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

【问题讨论】:

    标签: javascript node.js session express


    【解决方案1】:

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

    每个用户都有一个会话是正常的。 所以我不会考虑只对某些路由启用会话中间件,因为您可能希望在未来使用用户会话,即使是未登录的用户。

    就我而言,我只是将会话中的一个属性设置为true

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

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

    希望对你有帮助。

    干杯

    【讨论】:

    猜你喜欢
    • 2018-10-21
    • 2020-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-13
    • 1970-01-01
    • 1970-01-01
    • 2017-06-22
    相关资源
    最近更新 更多