2014-02-10 174 views
0

我寫有不同的看法小的角度JS應用。一些視圖可供所有用戶使用,但只有幾個視圖纔可用於登錄用戶。我在我的主頁上有一個小的登錄表單[請注意,沒有單獨的登錄屏幕]。阻止訪問基於某些條件下某些航線 - angularjs

一切都很好,直到這裏,直到然後我注意到,即使所有的視圖最初並沒有在我的屏幕上可用,並且只會在用戶登錄後才加載。但是,如果用戶知道受限視圖的網址,他可以繞過登錄過程。

我發現這個計算器問題非常相似,我的問題Redirecting to a certain route based on condition東西。請參閱接受的答案。

但這裏的問題是,我沒有一個單獨的登錄畫面,所以我不能使用公認的答案

if (next.templateUrl == "partials/login.html") { 
      // already going to #login, no redirect needed 
     } else { 
      // not going to #login, we should redirect now 
      $location.path("/login"); 
     } 

給這個代碼片斷如何能夠做到用相同的解決方案綜合登錄表單,因爲我沒有一個單獨的網址爲我的登錄屏幕?

+0

任何人都可以請幫我在這裏。 – user911

回答

0

我使用的UI路由器,併爲每路線resolve屬性。當路由被訪問時,resolve部分被首先執行。它返回一個承諾,並且該頁面在解析之前不會被加載。在這裏,您可以編寫一些服務器端調用來驗證用戶,如果無效,只需重定向到任何有效的頁面。您可以爲每個視圖編寫一個解決方案,並在每個步驟中驗證用戶。我使用節點/快速會話來存儲登錄的用戶數據。