2015-09-11 128 views
0

我將切入追逐。我使用passport-local構建了一個安全的應用程序,並且所有路線都很好地覆蓋。我的應用程序所做的是從mongo獲取數據並將其作爲api提供,然後反饋給d3圖表。現在我的所有網頁都是安全的,但是我可以在不登錄應用程序的情況下訪問api。使用護照本地保護API

這裏是我的網頁如何在route.js

app.get('/dashboard', isLoggedIn, function(req, res) { 
    res.render('dashboard.html', { 
     user : req.user 
    }); 
}); 

結構化,這是我的API代碼看起來像:

app.get('/api/finanData1', function(req, res) { 
    // use mongoose to get all nerds in the database 
    Subjects.find({}, {'_id': 0}, function(err, subjectDetails) { 
    // if there is an error retrieving, send the error. 
     // nothing after res.send(err) will execute 
    if (err) 
    res.send(err); 
else 
    res.json(subjectDetails); // return all nerds in JSON format 
    }); 
}); 

我試過造型API代碼,但它不工作。真的很感謝任何幫助。

謝謝。

編輯 回答這個問題的isLoggedIn中間件, 我修改了API代碼:

 app.get('/api/finanData1', isLoggedIn, function(req, res) { 
    // use mongoose to get all nerds in the database 
    Subjects.find({}, {'_id': 0}, function(err, subjectDetails) { 
    // if there is an error retrieving, send the error. 
     // nothing after res.send(err) will execute 
    if (err) 
    res.send(err); 
else 
    // return all nerds in JSON format 
    res.json(subjectDetails, { 
    user : req.user 
     }); 
    }); 
}); 

現在,當我嘗試沒有被記錄在訪問API,我被帶到了登錄頁面是完美的。但是登錄到應用程序後,我的圖表不會填充。如果我打開API鏈接,同時記錄在我得到這個響應,而不是,應該是有JSON數據:

{"user":{"_id":"55f2f701f26336d85c28012b","__v":0,"local":{"password":"$2a$08$Z69k5PqxWQi5jxFNm2g/xOIAG/QG9L1ud/lO0kJHhDWQWPm2Zfl4e","email":"[email protected]"}}} 

我應該分享我的服務器上的文件呢?

+1

使用您所做的'isLoggedIn'中間件功能不適合您? –

+1

你的API不使用IsLoggedIn中間件。 –

+0

謝謝大家的及時迴應,我正在更新的問題包括信息。 –

回答

1

你從你的API得到響應正是你傳遞什麼JSON響應幫手:

{ user : user_serialized } 

更改res.json線回只返回結果:

res.json(subjectDetails) 

如果需要,除了數據的用戶,你必須返回一個更復雜的對象,然後映射到數據屬性在客戶端上繪製圖表:

var response = { 
    data: subjectDetails, 
    user: req.user 
}; 

res.json(response); 
+0

其實今天剛剛開始整個節點護照事情。因此錯過了完整的圖片。但非常感謝您的幫助。出售:) –