如何防止重定向到'routeProvider'中的'otherwise'链接

时间:2016-04-13 19:50:58

标签: angularjs

好的,这个问题解释起来有点复杂。

我使用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文件,但我不确定它是否可行或我应该这样做)

有人可以告诉我为什么会这样以及如何解决它?

谢谢。

0 个答案:

没有答案