在我的angularjs應用中,我有路由/#/tasks
,它從/tasks
url中獲取任務。如果用戶手動轉到/tasks
網址,他會獲取json數據。我應該阻止顯示json數據給用戶嗎?最佳做法是什麼?例如,在後端我可以檢查請求是否是ajax。如果沒有 - 重定向到基本網址。後端 - laravel 5
。Angularjs路由:阻止用戶手動獲取json數據
0
A
回答
1
從具有關鍵字'阻止用戶'的帖子標題看來,您似乎需要某種邏輯來爲特定用戶定義訪問權限。
你可以堅持之前用戶訪問過的路線解決授權邏輯。 爲此,您可以利用.when()
方法的$routeProvider
的resolve
屬性。
根據該docs,將resolve
屬性是...
依賴性的可選地圖應當注入到控制器。如果這些依賴關係中的任何一個都是承諾,那麼路由器將等待它們全部被解析或者在控制器被實例化之前被拒絕。
如果所有的承諾都被成功解析,解析的承諾的值被注入並且觸發$ routeChangeSuccess事件。如果任何承諾被拒絕,$ routeChangeError事件被觸發。
的決心發生在函數(如注射依賴)每一個都可以返回承諾,如果有任何的承諾遭到拒絕,引,則會引發錯誤,並從字面上看,無論是路線也不視圖被加載。
要使授權邏輯正常工作,您需要對某些後端功能/服務執行一些API調用,以解決用戶被允許用於路由或拒絕他/她的請求。
.when('/tasks', {
resolve: {
authorize: function(authService){
//some api call to get either acceptance (e.g. status code 200) or rejection (status code 500) for the user being authorized
return authService.authorize();
}
},
controller: function(){
//route controller logic
}
})
另外,如果你想也想在承諾的失敗進行的東西,你可以通過簡單地鏈接與catch()
處理器的承諾這樣做,並拋出一個錯誤來強制拒絕從返回的承諾catch()
本身。
.when('/tasks', {
resolve: {
authorize: function($location, authService){
//some api call to get either acceptance or rejection for the user being
return authService.authorize()
.then(function(){
//some logic on success of the promise
})
.catch(function(){
$location.path('/auth/login/');
throw 'Authorization error';
});
}
},
controller: function(){
//route controller logic
}
})
相關問題
- 1. angularjs路由:獲取數據
- 2. Angularjs路由手動刷新
- 3. 阻止用戶手動訪問頁面
- 4. 獲取數據後啓動路由器
- 5. 在AngularJS路由URL中獲取參數
- 6. 獲取OSRM路由的JSON
- 7. 如何阻止用戶獲取消息?
- 8. Angularjs與數據路由
- 9. 獲取JSON數據,由逗號(,)的字符串中angularjs
- 10. angularjs:防止路由變化
- 11. 如何防止angularJS路由?
- 12. Angular 2 - 從JSON數據動態路由
- 13. 使用openwrt路由器阻止facebook.com
- 14. 使用Flask-Login阻止登錄用戶訪問登錄路由
- 15. AngularJS自動路由
- 16. 阻止AngularJS在路由之間緩存html
- 17. 我無法獲取JSON數據AngularJS
- 18. 阻止用戶回到具有骨幹網的特定路由
- 19. 獲取JSON數據 - 新手在這裏
- 20. 獲取JSON數據按照用戶ID
- 21. Laravel阻止特定路由的數據庫訪問
- 22. AngularJS + Flask客戶端路由
- 23. Angularjs - 用戶界面之間共享數據的路由器
- 24. 阻止谷歌索引的AngularJS路線
- 25. 阻止或擴展Breeze元數據自動獲取
- 26. 使用angularjs和JSON從數據庫中獲取數據
- 27. AngularJs使用參數路由
- 28. 從Rails數據庫中獲取路由
- 29. 從請求獲取路由數據
- 30. 如何獲取路由數據值