當前,我正在實現一個完全無狀態的基於令牌的身份驗證,使用AngularJS和REST API作爲後端服務。這很有效,但關於一個我目前不知道的狀態,並想問你如何處理它。使用應用程序級別解析的動態指令模板AngularJS
我的目的只是將我的身份驗證令牌保存在客戶端的本地存儲中。在從應用程序初始加載時,我想從REST API(GET/me)中檢索所有用戶信息,並將其保存在我的AngularJS項目的$ scope中。
實施它後,我有幾個問題,以確保檢索到的用戶信息已完全解決,並可以使用信息(如來自用戶的訪問權限)。
我只是想讓你展示一個例子,我遇到了一種「異步問題」。
angular.directive('myDirective', ['MyAsyncService', function(MyAsyncService) {
return {
restrict: 'E',
templateUrl: function(element, attributes) {
console.log(MyAsyncService.getData());
}
}
}]
在這個例子中,當呈現指令時,我的異步服務還沒有信息。還從ngRoute/ui-router或AngularJS的run()方法中檢索解析函數中的異步數據無法解決我的問題。
所以回到我的問題...最好從客戶端的用戶保存一些信息,以避免一些這樣的問題?從我的角度來看,最好不要保存任何類型的用戶信息(如訪問權限,用戶名,ID,電子郵件地址等),以達到安全目的。
如何處理基於令牌的AngularJS應用程序中的身份驗證和授權?
在此先感謝您,希望您能回到正軌。
對不起,我聽不懂你的問題1通過做這樣的事情模板上。如果你能解釋更多一點! – 2014-11-04 12:56:00
我會盡力詳細解釋我的意圖。在我的用戶登錄我的AngularJS應用程序後,我將從我的REST API服務生成的令牌保存在客戶端的本地存儲中。 之後,我可以通過我的API端點/我獲取所有用戶信息 - 這種方式和預期的一樣。問題是,我不想保存除客戶端本地存儲中的身份驗證令牌之外的任何用戶信息。因此,在引導我的應用程序後,我調用/ me端點並將響應(完整用戶對象)保存在我的範圍中。 – xyNNN 2014-11-05 00:09:44
問題是,這個異步調用是在我的angularjs指令呈現之後執行的。但在我的指令中,我需要來自用戶對象(我保存在範圍內)的一些信息,如accessRoles,但從邏輯上來說,當我嘗試從$ scope.user中獲取某些信息時會得到一個未定義的信息,因爲異步調用已完成。希望這可以清楚你的看法。在此先感謝 – xyNNN 2014-11-05 00:14:00