我想在AngularJS中實施授權。在我的項目中,這是一種社交媒體,不同的角色或甚至相同的角色可能會以不同的方式查看視圖文件。在AngularJS中實施授權
例如,假設我們有兩個不同的角色:客戶和公司。
客戶和公司在共享查看文件中可能有不同的東西,例如,一個公司可以在他的個人資料上有費率,而一個客戶不能。 (不同的角色)。
或者客戶可能會在一個頁面中看到一個按鈕,而另一個客戶則不能。 (相同的角色)
正如你所看到的,我不能通過簡單地檢查角色來實現授權,並且在某些情況下我需要與服務器通信。
我有多種選擇:
建立在我的控制器與相應的權限,他們有假默認值範圍變量:
$scope.auth = { canRate: false, isConnected: false };
然後連接到服務器,並改變基於響應的auth對象的值。並在我的視圖文件中使用
ng-if
來顯示或隱藏元素。創建一個指令並將逗號分隔的權限傳遞給它。
<button auth="canRate,isConnected"></button>
然後連接到服務器來檢查的權限。如果他們全部都是真的,那麼顯示這個元素。
- 使用
resolve: {...}
並在路由時從服務器獲取所有必要的數據,這會增加每個頁面的加載時間。
我想知道有沒有更好的方法來解決這個問題? 任何形式的幫助或評論將不勝感激。
注意:當然,我有服務器端認證和授權!我只想根據用戶角色或我解釋的其他一些條件在視圖文件中顯示一些元素。而這個元素就像一個按鈕或鏈接,否則,而不是使用共享視圖和隱藏元素,我可以爲每種情況使用不同的視圖。
任何如何,我知道這種方法僅用於顯示目的,他們不能解決安全挑戰。
*注意:看看this repository。
有更好的選擇,使用本地角路由器,或ui路由器。谷歌爲「oauth角」,並找到一些例子。 –
看來你不明白我的問題:) @VladimirM –
確實,確切的用例有點難以捉摸。儘管如此,我仍堅持認爲使用路由器功能更合適。您需要具備的是一種服務,負責在身份驗證後從服務器收集用戶配置文件(如果需要)。在進入狀態之前,您必須先解析配置文件收集任務,其中需要角色信息進行渲染。這樣你就不需要打擾默認值,因爲當你渲染視圖時,你將在服務中獲得真正的價值。事實上,你可以根據角色選擇一個狀態。 –