使用connect-auth持久login

我正在构build一个node.js并使用connect-auth进行用户/身份validation,而我想要做的是允许用户长时间login。 玩弄周围的源代码看起来像connect-auth取决于连接会话维护authentication状态,所以一旦会话cookie过期(默认4小时)用户注销。

一个select是fork连接authentication和重构不依赖于req.session,但这是不平凡的。 另一个select是将会话cookie的默认年龄更改为非常高,但我希望我的会话对象能够与会话一起死亡。

任何人有任何build议? 我忽略了现有的解决scheme吗?

谢谢!

我不会使用/ fork Connect-Auth。 这个连接插件打破了连接环的想法/架构(恕我直言)你的代码不可读/带来不必要的复杂性。

鉴定对于图书馆来说太简单了。 (如果你谈论一个简单的用户login)

我正在使用自己写的authentication。 你可以在下面find一个简化的版本。 这也取决于会话cookie,但它可以很容易地被持久的cookie取代。

连接的一个非常简单的authentication

(这是完整的,只需执行它进行testing)

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);