我正在编写一个需要身份验证的小型Node应用程序。
我有Node Express app.js,它包含auth.js和user.js,如下所示:
var mongo = require('mongoskin');
var db = mongo.db("mongodb://localhost:27017/ntp01", {native_parser:true});
var auth = require('./lib/auth');
var routes = require('./routes/index'); // Loads index.js module
var users = require('./routes/user'); // Loads user.js module
var tpapp = require('./routes/tpapp'); // Loads TP-app
var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(favicon());
app.use(logger('dev'));
app.use(bodyParser.json());
auth.js包含一个简单数组,其中包含我为每个用户登录时生成的令牌,上次访问时间和客户端IP。
我的问题是我在user.js模块中获得的客户端IP。如何在auth模块中访问和插入IP?
感谢您的帮助。
答案 0 :(得分:0)
有很多方法可以解决这个问题。
我能想到的最简洁的方法是将auth模块与用户模块一起使用。
但是现在所有酷孩子都在使用依赖注入。 如果你想走这条路,也许你的用户模块可以出口工厂。
所以,而不是:
module.exports = function users () {/* stuff *}
你可以拥有这个:
var defaultAuth = function defaultAuth() {}
module.exports = function userFactory (auth) {
auth = auth || defaultAuth
return function users () { /* stuff * }
}
在您的应用中,您需要用户:
// maybe add app specific stuff to you auth module.
var users = require('./routes/user')(auth);
// or if you want to use the user default auth
var users = require('./routes/user')();
通过这种方式,您可以将auth模块用作基础,并且每个应用程序都可以扩展"它,你可以重新使用auth代码。
此外,您的用户模块没有直接依赖关系。 希望有所帮助。