怎么设置登录成功后跳转到相应的页面
想要用angularjs实现的功能是
一进入就是一个登录页面(login.html),如果没有账号密码就注册,登录成功后跳转到相应的页面(shopcart.html)
碰到的问题
1.一进入页面没有显示登录页面
2.显示成功后该如何跳转到相应的页面
3.应该在何处判断用户是否登录,或者登录超时之类的
下面是我的文档目录结构
app.js里的代码如下
'use strict';
// Declare app level module which depends on filters, and services
angular.module('myApp', [])
.run(function($rootScope) {
$rootScope.$on('$stateChangeStart', function(event,toState,toParams,fromState,fromParams) {
if(toState.name == 'login') return;//如果是进入登录页面则允许
//如果用户不存在
if(!$rootScope.user || $rootScope.user.token) {
event.preventDefault();//取消默认跳转行为
$state.go("login",{from:fromState.name,w:'notLogin'});//跳转到登录界面
}
});
})
.config(function($httpProvider,$rootProvider) {
$httpProvider.interceptors.push('userInterceptor');
$rootProvider
.when('/',{
templateUrl:'views/shopcart.html'
})
.when('/login', {
templateUrl: 'views/account/login/login.html'
})
.when('register', {
templateUrl: 'views/account/register/register.html'
})
.otherwise({
redirectTo:'/login'
});
})
.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获取该事件,并给以相应的提示或处理
$rootScope.$emit("userInterceptor","notLogin",response)
}
//如果是登录超时
if(data["errorCode"] == "500998") {
$rootScope.$emit("userInterceptor","sessionOut",response);
}
return $q.reject(response);
}
}
}]);
login.controller.js文件里的代码如下
'use strict';
angular.module('myApp',[])
.controller('LogoinCtrl',["$rootScope","$scope", function($rootScope,$scope) {
//跳转到登录界面,记录了一个from,这样可以在登陆后自动跳转到未登录之前的那个页面去
$state.go("login", {from:$state.current.name,w:errorType});
if($rootScope.user,token) {
$state.go($rootScope.defaultPage);
return;
}
//登录成功后跳转到上一次页面,也就是上面记录的from
var from = $stateParams["from"];
$state.go(from && from != "login" ? from : $rootScope.defaultPage);
}]);
login.js里的代码如下
angular.module('myApp',[])
.config(function($stateProvider) {
$stateProvider
.state('login', {
url:"/login",
templateUrl:"views/account/login/login.html"
})
.state('register', {
url:'/register',
templateUrl:"views/account/register/register.html"
})
.otherwise({redirectTo: '/login'});
});
shopcart.js里的代码如下
'use strict';
angular.module('myApp',[])
.config(function($stateProvider) {
$stateProvider
.state('/',{
url:'/home',
templateUrl:'views/account/shopcart/shopcart.html' //登录成功后跳转到购物车页面
})
.oherwise({redirecTo:'/login'});
})
相关阅读:
secureCRT的问题
python里面这是什么编码
写h5图片太多,想做预加载,能帮忙看看这个函数怎么调用嘛?
Jquery PHP 如何实现SF中Markdown图片显示的功能?
正则表达式:/^|\s+/是什么意思?
请教PHP数组内存耗用太多问题的解决方法
关于SESSION不过期的问题
成功安装pyspider以后,本地使用就会出现错误
做ajax请求后端PHP的时候最后输出数据为什么我看别人代码都是exit()而非echo
数据库中各种角色分表的问题
linux程序怎么打包?
centos nginx 301重定向问题
wordpress 将统计代码放到 钩子里
pdo用好了是不是就基本不用自己在写输入过滤了吧?
怎样用REST设计 取得全部资源的部分信息的API
Gradle DSL method not found: 'android()'
Intellij IDEA 发布后的项目在哪里
django项目中的models.py里的类的定义和方法的定义没有包含的关系,还有必要用类名.方法名这样调用方法吗
visualstudio2010中ASP.NET中安全配置 总是提出mysql错误
requests 库 使用过程中timeout值最大可设值?