[英]Securing an API using passport-local
我會追逐。 我使用本地護照構建了一個安全的應用程序,所有路線都被很好地涵蓋了。 我的應用程序要做的是從mongo中獲取數據,並將其作為api進行服務器處理,進而提供d3圖表。 現在,我所有的網頁都是安全的,但是我無需登錄應用程序即可訪問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":"anmol.koul@wincere.com"}}}
我也應該共享我的服務器文件嗎?
您從api獲得的響應正是您傳遞給json響應幫助器的內容:
{ user : user_serialized }
將您的res.json行改回以簡單地返回結果:
res.json(subjectDetails)
如果除了數據外還需要用戶,則必須返回一個更復雜的對象,然后映射到客戶端上的data屬性以繪制圖表:
var response = {
data: subjectDetails,
user: req.user
};
res.json(response);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.