大佬教程收集整理的这篇文章主要介绍了Angularjs ui路由器 如何重定向到登录页面,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
.state('dashboard',{ url: "/dashboard",abstract: true,templateUrl: "views/dashboard.html",resolve: { auth: function ($q,authenticationSvc) { var userInfo = authenticationSvc.getUserInfo(); if (userInfo) { return $q.when(userInfo); } else { return $q.reject({ authenticated: false }); } } },controller: "DashboardCtrl",data: { pageTitle: 'Example view' } }) .state('dashboard.main',{ url: "",templateUrl: "views/main.html",data: { pageTitle: 'Main view' } })
正如你在仪表板状态我看到解决选项。通过这个,我想重定向用户到登录页面,如果他没有授权。为此,我使用特殊的authenticationSvc服务:
.factory("authenticationSvc",["$http","$q","$window",function ($http,$q,$window) { var userInfo; function login(email,password) { var deferred = $q.defer(); $http.post("/api/login",{ email: email,password: password }) .then(function (result) { if(result.data.error == 0) { userInfo = { accessToken: result.data.accessToken }; $window.sessionStorage["userInfo"] = JSON.stringify(userInfo); deferred.resolve(userInfo); } else { deferred.reject(error); } },function (error) { deferred.reject(error); }); return deferred.promise; } function getUserInfo() { return userInfo; } return { login: login,logout: logout,getUserInfo: getUserInfo }; }]);
我检查auth值在config:
.run(function($rootScope,$location,$state) { $rootScope.$state = $state; $rootScope.$on("routeChangeSuccess",function(userInfo) { consol.log(userInfo); }); $rootScope.$on("routeChangeError",function(event,current,prevIoUs,eventObj) { if(eventObj.authenticated === false) { $state.go('login'); } }); });
.run(function($rootScope,$state,authenticationSvc) { $rootScope.$on( '$stateChangeStart',function(e,toState,toParams,fromState,fromParams) { var isLogin = toState.name === "login"; if(isLogin){ return; // no need to redirect } // Now,redirect only not authenticated var userInfo = authenticationSvc.getUserInfo(); if(userInfo.authenticated === false) { e.preventDefault(); // stop current execution $state.go('login'); // go to login } }); });
检查这些类似的解释:
> Angular ui router – Redirection doesn’t work at all
> How can I fix ‘Maximum call stack size exceeded’ AngularJS
以上是大佬教程为你收集整理的Angularjs ui路由器 如何重定向到登录页面全部内容,希望文章能够帮你解决Angularjs ui路由器 如何重定向到登录页面所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。