11月在趕一個項目,這陣子比較忙,擠擠時間更一篇博客吧,如標(biāo)題所述說說在ng中頁面訪問權(quán)限控制的問題,水平有限各位看官見諒;
在以往的項目中,前后端常見的配合方式是前端提供頁面和ui加一點(diǎn)DuangDuangDuang的效果,后端搭建框架數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)交互(數(shù)據(jù)交互前后端有交集),不管是.net、java or php都能一對多的提供前端服務(wù),然而在新形式下項目中運(yùn)用了前端框架,開發(fā)情況就不一樣了,比如我要說的這是在angular框架下完成的開發(fā),模式是后端提供服務(wù)和api文檔,頁面和數(shù)據(jù)交互及邏輯處理由前端完成,前端儼然是個完全的programer了,這個過程中就會遇到之前意想不到的問題(如果沒有做過后端開發(fā)),比如頁面權(quán)限控制,不得不說,使用前端的方式去做這些設(shè)置比較糾結(jié),因為這方面的數(shù)據(jù),也就是這些權(quán)限的‘標(biāo)示’,后端運(yùn)行的時候是可以直接獲得的,即像獲取字段數(shù)據(jù)a.b點(diǎn)一下就出來了,而前端只能用http請求的方式獲取,繁瑣麻煩;
其實在ng中做頁面訪問權(quán)有很多種方法,各有利弊,運(yùn)用的比較多的是攔截器,攔截器使得在前端往后端發(fā)送http請求之前或之后做一些操作,比如全局監(jiān)測用戶是否登錄,沒登陸就要跳轉(zhuǎn)的登錄頁面,登錄就可以訪問頁面;攔截器的使用往往配合后臺數(shù)據(jù),也就是獲取到最新的‘標(biāo)示’,來確定這個頁面或者下個頁面要做什么操作;而這里我使用的是一種用前端控制的方式,不用數(shù)據(jù)交互,理念就是定義好不同等級/階段可以訪問的頁面,在路由的地方作攔截,針對一些不同等級/階段訪問權(quán)限定義明確的可以參考使用這種方法,代碼如下:
...... app.run(['$rootScope', '$state', '$window', function($rootScope, $state, $window) { $rootScope.$on('$stateChangeStart', function(event, toState, toStateParams) { //用戶訪問等級階段, 0 1 2 Array.prototype.contains = function(needle) { for(i in this) { if(延伸閱讀
學(xué)習(xí)是年輕人改變自己的最好方式
- ssh框架 2016-09-30
- 阿里移動安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二) 2017-07-26