麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > JavaScript > 正文

AngularJS實現(xiàn)用戶登錄狀態(tài)判斷的方法(Model添加攔截過濾器,路由增加限制)

2019-11-19 18:33:44
字體:
供稿:網(wǎng)友

本文實例講述了AngularJS實現(xiàn)用戶登錄狀態(tài)判斷的方法。分享給大家供大家參考,具體如下:

使用AngularJS的單頁面應(yīng)用時,由于是本地路由在控制頁面跳轉(zhuǎn),但是有的時候我們需要判斷用戶是否登錄來判斷用戶是否能進(jìn)入界面。

angularjs是mvc架構(gòu)所以實現(xiàn)起來很容易也很靈活,我們只MainController里增加一個路由事件偵聽并判斷,這樣就可以避免未登錄用戶直接輸入路由地址來跳轉(zhuǎn)到登錄界面地址了

代碼中的 $rootScope.user是登錄后把用戶信息放到了全局rootScope上,方便其他地方使用,$rootScope.defaultPage也是默認(rèn)主頁面,初始化的時候?qū)懰赖絩ootScope里的。

$rootScope.$on('$stateChangeStart',function(event, toState, toParams, fromState, fromParams){  if(toState.name=='login')return;// 如果是進(jìn)入登錄界面則允許  // 如果用戶不存在  if(!$rootScope.user || !$rootScope.user.token){    event.preventDefault();// 取消默認(rèn)跳轉(zhuǎn)行為    $state.go("login",{from:fromState.name,w:'notLogin'});//跳轉(zhuǎn)到登錄界面  }});

另外還有用戶已經(jīng)登錄,但是登錄超時了,還有就是增加后臺接口的判斷來增強(qiáng)安全性。不能完全依靠本地邏輯

我們在model里面增加一個用戶攔截器,在rensponseError中判斷錯誤碼,拋出事件讓Contoller或view來處理

app.factory('UserInterceptor', ["$q","$rootScope",function ($q,$rootScope) {  return {    request:function(config){      config.headers["TOKEN"] = $rootScope.user.token;      return config;    },    responseError: function (response) {      var data = response.data;      // 判斷錯誤碼,如果是未登錄      if(data["errorCode"] == "500999"){        // 清空用戶本地token存儲的信息,如果        $rootScope.user = {token:""};        // 全局事件,方便其他view獲取該事件,并給以相應(yīng)的提示或處理        $rootScope.$emit("userIntercepted","notLogin",response);      }      // 如果是登錄超時      if(data["errorCode"] == "500998"){        $rootScope.$emit("userIntercepted","sessionOut",response);      }      return $q.reject(response);    }  };}]);

別忘了要注冊攔截器到angularjs的config中哦

app.config(function ($httpProvider) {  $httpProvider.interceptors.push('UserInterceptor');});

最后在controller中處理錯誤事件

$rootScope.$on('userIntercepted',function(errorType){  // 跳轉(zhuǎn)到登錄界面,這里我記錄了一個from,這樣可以在登錄后自動跳轉(zhuǎn)到未登錄之前的那個界面  $state.go("login",{from:$state.current.name,w:errorType});});

最后還可以在loginController中做更多的細(xì)節(jié)處理

// 如果用戶已經(jīng)登錄了,則立即跳轉(zhuǎn)到一個默認(rèn)主頁上去,無需再登錄if($rootScope.user.token){  $state.go($rootScope.defaultPage);  return;}

另外在登錄成功回調(diào)后還可以跳轉(zhuǎn)到上一次界面,也就是上面記錄的from

var from = $stateParams["from"];$state.go(from && from != "login" ? from : $rootScope.defaultPage);

更多關(guān)于AngularJS相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《AngularJS入門與進(jìn)階教程》及《AngularJS MVC架構(gòu)總結(jié)

希望本文所述對大家AngularJS程序設(shè)計有所幫助。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 中文日韩 | 黄色免费电影网址 | 成人免费观看49www在线观看 | 天天夜天天操 | 精国品产一区二区三区有限公司 | 精品国产一区二区三区天美传媒 | 91懂色| 国产精品久久久久久模特 | 久久成人视屏 | 国产噜噜噜噜久久久久久久久 | 黄色片免费在线 | 久久亚洲春色中文字幕久久 | 在线播放黄色网址 | 精品久久久久久久久久久久 | 斗破苍穹在线观看免费完整观看 | 欧美一区二区三区久久精品视 | 12av毛片| 成人一级毛片 | 九九热在线视频免费观看 | 午夜国产精品成人 | 久久综合九色综合久久久精品综合 | 欧美日韩国产综合网 | 欧美精品黄色 | 亚洲午夜天堂吃瓜在线 | 免费在线观看国产精品 | 久久精片 | 亚洲影院在线 | 18欧美性xxxx极品hd | 中文字幕一区二区三区久久 | 国产精品久久久久久久久久电影 | 欧美视频一二三区 | 黄色网址免费在线 | 精品一区二区免费视频视频 | 精品亚洲成a人在线观看 | 国产一区精品在线观看 | 依人在线视频 | 娇喘在线| 在线成人一区 | 欧美一级高潮 | 万圣街在线观看免费完整版 | 深夜精品福利 |