2013-01-08 51 views
1

我正在使用NodeJS,快遞和護照。不過,我認爲這個問題只是關於JavaScript。 在我的路線文件,我有如何爲我的函數添加更多參數?

app.get( '/users', login_req, user.index); 

所以當服務器接收以/用戶的GET請求,它會通過req, res, next通過login_req功能,login_req將調用user.index功能,如果用戶被授權。我想知道如何以及如何爲login_req添加更多參數?我的目標是能夠傳遞其他參數,如login_req(['admin'],['user1', 'user2']),以便能夠選擇哪些用戶可以訪問user.index。

這裏是我的login_req代碼:

exports.login_req = function(req, res, next) { 
    if (req.isAuthenticated()) { return next(); } 
    res.redirect('/login') 
} 

我猜想,在一般情況下,我不知道如何以更多的參數附加到回調。

+1

你的語法是有點過。 'login_req({'admin'},{'user1','user2'});'會更接近你所需要的。 –

+0

聽起來像你需要一個回調。 – elclanrs

+0

@LayTaylor修,謝謝! –

回答

2

以上回答應該工作,但是我一直在尋找一個更有組織的解決方案。使用我從上面的答案中學到的東西,我想出了以下內容。

我從jQuery pass more parameters into callback瞭解到如何在回調中添加更多參數。這裏是我的代碼:

exports.login_req = function(groups, users) { 
    return function(req, res, next) { 
    console.log(groups, users) 
    if (req.isAuthenticated()) { return next(); } 
    res.redirect('/login') 
    }; 
} 

app.get( '/users', login_req("group1"), user.index); 

回調login_req通過組= 「1組」 和用戶=不確定。 login_req返回帶有參數req, res, nextgroups, users的匿名函數,可通過關閉使用。我已經打印出團體和用戶進行概念驗證,並且它似乎有效。

我更喜歡這種方法,因爲現在我可以有我的routes.js文件組織像這樣:

app.get( '/users',   login_req("admins"),  user.index); 
app.get( '/users/new',        user.new); 
app.post('/users',         user.create); 
app.get( '/users/:id',        user.show); 
app.get( '/users/:id/edit', login_req("admins", "user1"), user.edit); 
app.put( '/users/:id',  login_req("admins", "user1"), user.update); 
app.del( '/users/:id',  login_req("admins", "user1"), user.destroy); 
1

傳遞一個匿名函數來get,並從內部調用login_req

app.get('/users', function (req, res, next) { 
    login_req(req, res, next, something, somethingElse); 
}, user.index); 
+0

我理想地喜歡更乾淨的東西,因爲我有超過20個這些app.get,app.post等行。我用http://stackoverflow.com/questions/939032/jquery-pass-more-parameters-into-callback找到解決方案,我將在下面發佈。 –

相關問題