Я слушаю $stateChangeStart
в своем разделе run
, чтобы перенаправить на страницу входа, если пользователь не вошел в систему (используя мой пользовательский loginProvider
для проверки).Как перезагрузить конфигурацию с помощью углового ui-router?
Если пользователь не выполнил вход в систему, переход на /#/home
успешно изменит URL-адрес на /#/login
... Это не перезагружает страницу, хотя, тем самым, дает пользователю доступ к домашней странице в любом случае.
Итак, как вы перезагружаете маршрут?
angular.module("app", [
"app",
"ui.router"
])
.config(["$stateProvider", "$urlRouterProvider", "$httpProvider", function ($stateProvider, $urlRouterProvider, $httpProvider) {
$stateProvider
.state("login", {
url: "/login",
templateUrl: "app/login/login.html",
controller: "loginController",
authenticate: false
})
.state("home", {
url: "/home",
templateUrl: "app/home/home.html",
controller: "homeController",
authenticate: true
});
$urlRouterProvider.otherwise("login");
}])
.run(["$rootScope", "$state", "loginProvider", function ($rootScope, $state, loginProvider) {
$rootScope.$on("$stateChangeStart", function (event, toState, toParams, fromState, fromParams) {
if (toState.authenticate && !loginProvider.isLoggedIn()) {
$state.transitionTo("login");
$state.reload(); // not working
$state.go("login", {}, {reload: true}); // not working
}
});
}]);
Я использую угловую версию 1.5.1 и версию углового ui-router версии 0.2.18.
есть ошибки? – Sandeep
@Sandeep Нет ошибок, просто переходите к '/ #/home', чтобы изменить URL-адрес'/#/login' ... но все равно показывает домашнюю страницу. Я хочу, чтобы он переместился на * и * перезагрузил страницу входа. –
см. Мой ответ может быть полезным для u – Sandeep