gpt4 book ai didi

javascript - 使用 $routeChangeStart 管理访问

转载 作者:行者123 更新时间:2023-12-03 11:16:16 25 4
gpt4 key购买 nike

我正在尝试管理对某些网址的访问。当我未登录并且我尝试导航到主页时,它必须将我重定向到登录页面。当我导航到主页“/”时会发生这种情况:在我的浏览器中,URL 是 #!/login 但在 ng-view 中我得到的是主页 View 而不是登录 View 。导航到登录和注册工作正常

var app = angular.module('todo', ['ngRoute']);

app.config(['$routeProvider', '$locationProvider', function ($routeProvider, $locationProvider) {

$locationProvider.html5Mode(false);
$locationProvider.hashPrefix('!');

$routeProvider
.when("/", {
controller: "homeController",
templateUrl: "app/partials/home.html",
requireAuth: true
})

.when("/login", {
controller: "loginController",
templateUrl: "app/partials/login.html",
requireAuth: false
})

.when("/signup", {
controller: "signupController",
templateUrl: "app/partials/signup.html",
requireAuth: false
})

.otherwise({ redirectTo: "/" });

}])

// Manage Access
.run(['$rootScope', '$location', 'authService', function($rootScope, $location, authService){
$rootScope.$on('$routeChangeStart', function(evt, next, current){
if((!authService.userInfo.isAuth)&&(next.requireAuth)){
$location.path('login');
}

})
}]);

最佳答案

$routeChangeStart 事件期间能够更改 $location 的行为在 Angular 1.3.0 中已更改。这是fixed in a more recent update ,因此您可以更新到最新版本,或使用 this workaround :

$rootScope.$on("$routeChangeStart", function (event, next, current) {
if ((!authService.userInfo.isAuth) && (next.requireAuth)) {
event.preventDefault();
$rootScope.$evalAsync(function() {
$location.path('/login');
});
}
});

关于javascript - 使用 $routeChangeStart 管理访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27334182/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com