簡體   English   中英

Node.js和角度用戶授權

[英]Node.js and angular user authorization

未授權用戶時,如何阻止node.js中的HTML文件請求。 我有這樣的html樹:

app.use('/templates', express.static(path.join(__dirname, 'templates')));
  • index.html(適用於所有人)
  • panel.html(僅適用於授權)
  • settings.html(僅適用於授權)

有什么好的和清晰的代碼解決方案可以阻止此內容? 我考慮這樣的事情:

router.get('/templates/panel.html', function(req, res, next) {
  if (req.session && req.session.user) {
   // return content
  } else {
    // block content or send error.html
  }
});

我的ng-router配置:

  when('/panel', {
    templateUrl: 'templates/panel.html',
    controller: 'panelController',
    // maybe controls authorize here to
  }).

但是,當我們使用$ templateCache時會發生什么呢?

假設您不希望其他用戶訪問某些信息,而不是隱藏html模板。

最好的方法可能是將所有模板編譯為$ templateCache。 然后在您的路由內部,您可以使用resolve屬性, 在此處讀取

可選的依賴項映射,應將其注入到控制器中。 如果這些依賴關系中的任何一個是應許的,路由器將在實例化控制器之前等待所有這些依賴關系被解決或一個被拒絕。 如果所有的諾言都已 成功 解決 ,則將注入已解決的諾言的值,並 觸發$ routeChangeSuccess事件。 如果任何承諾都 被拒絕,則會觸發$ routeChangeError事件 為了更輕松地從模板訪問已解析的依賴關系,解析映射將在路由范圍內位於$ resolve(默認)或由resolveAs屬性指定的自定義名稱下(請參見下文)。 當使用組件作為路由模板時,這特別有用。

這將允許您向服務器端發出請求,在服務器端將檢查用戶權限以打開所需頁面。

另外,在為那些需要特殊特權的頁面提供信息時,您希望在服務器端進行某種授權檢查。

對資源進行命名空間也是一個好主意,這樣可以更輕松地在一個地方完成授權。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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