Authentication 具有connect auth的持久登录

Authentication 具有connect auth的持久登录,authentication,node.js,Authentication,Node.js,我正在构建一个node.js并使用connectauth进行用户/通过身份验证,我想做的是允许用户长时间登录。在源代码中四处玩和查看,似乎连接身份验证依赖于连接会话来保持身份验证状态,因此一旦会话cookie过期(默认为4小时),用户就会注销 一个选项是fork-connect-auth和重构,使其不依赖于req.session,但这并不简单。另一个选项是将会话cookie上的默认年龄更改为非常高,但我希望我的会话对象能够随会话一起消亡 有人有什么建议吗?我是否忽略了现有的解决方案 谢谢 我不会

我正在构建一个node.js并使用connectauth进行用户/通过身份验证,我想做的是允许用户长时间登录。在源代码中四处玩和查看,似乎连接身份验证依赖于连接会话来保持身份验证状态,因此一旦会话cookie过期(默认为4小时),用户就会注销

一个选项是fork-connect-auth和重构,使其不依赖于req.session,但这并不简单。另一个选项是将会话cookie上的默认年龄更改为非常高,但我希望我的会话对象能够随会话一起消亡

有人有什么建议吗?我是否忽略了现有的解决方案


谢谢

我不会使用/fork-Connect-Auth。这个connect插件打破了connect的洋葱圈思想/架构,使(IMHO)代码不可读/带来了不必要的复杂性

身份验证对于库来说太简单了。(如果您正在谈论一个简单的用户登录)

我用的是自己写的。你可以在下面找到一个简化的版本。它还依赖于会话cookie,但可以很容易地用持久cookie替换

使用connect进行非常简单的身份验证 (已完成。只需执行它进行测试)


谢谢你能详细解释一下你所说的打破洋葱环拱是什么意思吗?是的。我已经在>上解释过了。(请点击“连接基础”一文的链接)
var connect = require('connect');
var urlpaser = require('url');

var authCheck = function (req, res, next) {
    url = req.urlp = urlpaser.parse(req.url, true);

    // ####
    // Logout
    if ( url.pathname == "/logout" ) {
      req.session.destroy();
    }

    // ####
    // Is User already validated?
    if (req.session && req.session.auth == true) {
      next(); // stop here and pass to the next onion ring of connect
      return;
    }

    // ########
    // Auth - Replace this simple if with you Database or File or Whatever...
    // If Database, you need a Async callback...
    if ( url.pathname == "/login" && 
         url.query.name == "max" && 
         url.query.pwd == "herewego"  ) {
      req.session.auth = true;
      next();
      return;
    }

    // ####
    // User is not unauthorized. Stop talking to him.
    res.writeHead(403);
    res.end('Sorry you are unauthorized.\n\nFor a login use: /login?name=max&pwd=herewego');
    return;
}

var helloWorldContent = function (req, res, next) {
    res.writeHead(200, { 'Content-Type': 'text/plain' });
    res.end('authorized. Walk around :) or use /logout to leave\n\nYou are currently at '+req.urlp.pathname);
}

var server = connect.createServer(
      connect.logger({ format: ':method :url' }),
      connect.cookieParser(),
      connect.session({ secret: 'foobar' }),
      connect.bodyParser(),
      authCheck,
      helloWorldContent
);

server.listen(3000);