好的,这个问题解释起来有点复杂。
我使用ng-view
,$routeProvider
和$routeChangeStart
来创建授权登录/注册系统。
我的js代码在这里
app.config(['$routeProvider',
function ($routeProvider) {
$routeProvider.
when('/login', {
title: 'Login',
templateUrl: 'authorization/login.html',
controller: 'authCtrl'
})
.when('/profile', {
title: 'Profile',
templateUrl: 'authorization/profile/index.html',
controller: 'authCtrl'
})
.when('/myaccount', {
title: 'MyAccount',
templateUrl: 'authorization/profile/account/index.html',
controller: 'authCtrl'
})
.otherwise({
redirectTo: '/login'
});
}
])
.run(['$rootScope', '$location', 'loginService', function ($rootScope, $location, loginService) {
var routeLogin = ['/login', '/signup']; //pages required before login
$rootScope.$on("$routeChangeStart", function (event, next, current) {
$rootScope.authenticated = false;
loginService.get('session').then(function (results) {
if (results.cid) {
$rootScope.authenticated = true;
$rootScope.cid = results.cid;
$rootScope.personal_name = results.personal_name;
$rootScope.personal_email = results.personal_email;
if(routeLogin.indexOf($location.path()) != -1) {
$location.path('/profile');
}
} else {
if (routeLogin.indexOf($location.path()) == -1) {
$location.path("/login");
}
}
});
});
}]);
登录后,我想在个人资料页面中使用<a href="#/profile/account">
或ng-href指向我的帐户页面,即$routeProvider
中的“myaccount”。
然而,在我点击链接后,脚本总是使用$routeProvider
中的'otherwise'选项并将我重定向回配置文件页面(因为我已经登录,所以它重定向到登录页面然后重定向到个人资料页面。)
如果我不使用,授权系统将不起作用,并给我一个空白页面(除非我创建.htaccess文件,但我不确定它是否可行或我应该这样做)
有人可以告诉我为什么会这样以及如何解决它?
谢谢。