簡體   English   中英

使用本地護照保護API

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM