2016-02-01 124 views
1

我是Angular的新手,我試圖包裹頭部的一件事是路由授權。我來自.NET/IIS世界,其中路由授權與使用[Authorize]屬性裝飾您的API或MVC控制器一樣簡單。角度路由授權安全

我已經閱讀了幾篇關於Angular如何處理路由的文章和文檔。我擔心的是授權正在客戶端上發生。什麼阻止用戶啓動開發工具,斷開腳本執行以及更改授權服務中用於控制用戶是否有權訪問此路由的變量?

正如我所說,我是Angular的新手,所以也許我誤解了路由的工作原理。如果是這種情況,請糾正我。

所以,我的問題是:如何使用Angular路由實現與使用服務器端路由授權時相同的安全級別?

謝謝。

回答

1

很明顯,純粹的客戶端解決方案不能存在。因此,只有在必須安全限制某條路線的情況下,才能使用角度路由。我認爲路由必須在兩端進行處理。

我使用節點所以這裏是我做過什麼:

//first evaluate the restricted route 
 
app.get('/admin/*', function(req, res) { 
 
    //authorization 
 
    var authenticated = call_to_auth_service(); 
 
    if (!authenticated) { 
 
     res.status(403); 
 
     res.end(); 
 
    } 
 
    else { 
 
     //just remove the front/
 
     var url = req.url.replace('/admin/', 'admin/'); 
 
     res.render(url); 
 
    } 
 
}); 
 

 
//open access - everything else goes back to the index page and there the angular routing takes over 
 
app.get('*', function(req, res){ 
 
    res.render('index'); 
 
});

這工作,但我不知道這是最好的辦法。你怎麼看?這是處理路由的正確方法嗎?

謝謝。