【问题标题】:Node & Express + jQuery: After authenticating save for sessionNode & Express + jQuery:验证后保存会话
【发布时间】:2013-09-08 00:36:13
【问题描述】:

我设法使用户能够使用名称/密码进行身份验证。我想要实现的是,一个禁用的下拉列表,当他进行身份验证时,它被启用,然后他可以通过下拉列表访问文件。我设法做到的所有这些,让我感到困惑的一件事是如何检查他是否已经通过身份验证?所以没有人会检查 html 代码并访问文件。

我需要一种方法来确定客户端 (jQuery) 是否已通过身份验证,例如以关闭页面结束的会话变量。

编辑:我需要保护它,我想存储一个允许客户端查看所有日志文件的布尔值。

【问题讨论】:

  • 取决于您的客户端是什么。都是动态的吗?当用户进行身份验证时,他是通过 ajax 还是整页提交?
  • jQuery ajax,ajax 发送带有名称/密码的帖子,然后节点处理检查并返回他是否成功登录。
  • 好的,所以您的问题是维护“用户是否登录?”在浏览器端打开窗口的整个生命周期中的知识状态?

标签: javascript jquery node.js authentication express


【解决方案1】:

将此布尔值存储在 Express 会话中,然后选择要发送给客户端的页面。

// enable session support
app.use(express.cookieParser());
app.use(express.session({
  secret: 'secret key for signed cookies'
}));

app.get('/foo', function(req, res) {
  req.session.authenticated = true;
});

app.get('/bar', function(req, res) {
  if (req.session.authenticated) {
    // send page with files
  } else {
    // send page without files
  }
});

【讨论】:

  • 安全吗?可以以某种方式对其进行编辑/黑客攻击吗?请记住,我想存储一个布尔值,如果为真,客户端将可以访问所有内容。另外,秘钥是什么?
  • 如果互联网上有东西,那么它很可能是可破解的。但是,是的,会话是安全的,密钥用于签名的 cookie。
  • 所以没有人可以修改它的值?
  • 只能在服务器端修改。
猜你喜欢
  • 1970-01-01
  • 2012-08-03
  • 2018-06-30
  • 2014-04-11
  • 2014-04-09
  • 2021-09-22
  • 2014-10-06
  • 1970-01-01
  • 2018-11-21
相关资源
最近更新 更多