2016-09-24 145 views
0

我目前在我的Angular應用程序中使用ui.router作爲我的頁面路由,但它已經開始爲我的應用程序的部分應用程序向沒有權限的用戶開發一些問題。Angular ui路由和權限

我試圖找到這方面的文件,沒有運氣,所以希望有這樣的票價,所以希望有人在這裏有一個辦法。

在我的示例中,我在下面的示例中顯示我的應用程序中有三個頁面,但並非所有頁面都允許進入moderators頁面。如果他們這樣做,我當然會驗證權限服務器端並重定向他們,但我覺得在我的應用程序中顯示所有可能的頁面是有點利用它,這可以在某種程度上限制在ui.router,而不是我的自動生成路由器文件服務器端,或者是,只是我需要住:)

$stateProvider 
    .state('default', { 
     url: '/', 
     views: { 
     'mainViewContainer': { 
      templateUrl: 'pages/default.html' 
      } 
     } 
    }) 
    .state('news', { 
     url: '/news', 
     views: { 
     'mainViewContainer': { 
      templateUrl: 'pages/news.html' 
      } 
     } 
    }) 
    .state('moderators', { 
     url: '/moderators', 
     views: { 
     'mainViewContainer': { 
      templateUrl: 'pages/moderators.html' 
      } 
     } 
    }); 

回答

0

嘗試使用決心加入 - 的東西,是一個國家的前提條件的列表。

.state(..., { 
    ... 
    resolve: { 
     adminPermission: (AdminService) => { 
       return AdminService.validate(); 
     } 
    } 
    ... 
}) 

然後,如果AdminService回報失敗,應用程序將無法進入狀態(你可以使用一個$onStateChangeError事件捕獲它)承諾

編輯: 如何寫主持人狀態if if條款即

If(isAdmin) 
    stateProvider.state(...) 
+0

是的,但這仍然不能阻止路由呈現給瀏覽下載到他的機器的JavaScript文件的用戶。我希望他甚至不能看到該頁面存在 – aweis

+0

如果您不想生成不同的配置文件,那麼在註冊狀態之前添加if子句怎麼樣? – eavidan

+0

我不明白有關if條款嗎? – aweis