如何在 Node.js Express 中检查会话?

新手上路,请多包涵

我尝试检查 Express 4 中的会话是否存在:

 if(req.session.user == undefined) {}

它给了我错误:

  Cannot read property 'user' of undefined

如何检查会话中是否存在值?

原文由 Huligan 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 456
2 个回答

来源

如何使用快速会话?

在开始实际代码之前,我想简单介绍一下 express-session 模块。要使用这个模块,你必须在你的项目中包含 express。像所有包一样,我们必须首先包含它。

 server.js
var express = require('express');
var session = require('express-session');
var app = express();

在此之后,我们必须初始化会话,我们可以使用以下方法来做到这一点。

 app.use(session({secret: 'ssshhhhh'}));

这里的 ‘secret’ 用于 cookie 处理等,但我们必须在 Express 中设置一些秘密来管理 Session。

现在使用“请求”变量,您可以将会话分配给任何变量。就像我们在 PHP 中使用 $_SESSION 变量一样。例如

var sess;
app.get('/',function(req,res){
    sess=req.session;
    /*
    * Here we have assign the 'session' to 'sess'.
    * Now we can create any number of session variable we want.
    * in PHP we do as $_SESSION['var name'].
    * Here we do like this.
    */
    sess.email; // equivalent to $_SESSION['email'] in PHP.
    sess.username; // equivalent to $_SESSION['username'] in PHP.
});

在创建 sess.email 等 Session 变量后,我们可以检查该变量是否在其他路由器中设置,并且可以轻松跟踪 Session。

原文由 Rahul Tripathi 发布,翻译遵循 CC BY-SA 3.0 许可协议

首先,它取决于您使用的库,也许某些库具有实用程序,我假设您使用的是 express-session

这没关系:

 if(req.session.user){}

它们是无用的:

 if(typeof req.session.user !== "undefined"){}

if(typeof req.session.user !== "undefined" || req.session.user === true){}

原因req.session 是一个对象,就像普通对象一样:

 var obj = { name : "adam" }

如果你试图获取它不存在和定义的 obj.age ,对象的 getter函数,首先检查它是否存在,如果不存在,它不会产生 致命错误,而是分配该属性到 未定义 的值。

这很酷,所以 obj.age 未定义(JS 有 undefined 作为值类型),此外 undefined false,所以它是假的),这意味着你可以简单地在这样的条件语句中检查它: if(obj.age){}

原文由 Mehdi Raash 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题