2015-11-02 2 views
0

В настоящее время я имею дело с angularjs, и я новичок. Я работаю для аутентификации для каждого запроса http и URL-адресов. Поэтому я реализовал мир кодов для URL-адреса меняющейся аутентификации, как сильфонныекак переключить URL-адрес на основе условия в angularjs?

/** Main Login submit **/  
$scope.submit = function() { 
    console.log("enter login submit"); 
    $scope.submitted = true; 
    if (!$scope.loginForm.$invalid) { 
     $scope.login($scope.credentials); 
    } else { 
     $scope.error = true; 
     $scope.error_des = ''; 
     return; 
    } 
}; 

//enter code here 

/** checking after loggedin in each url **/ 
if ($window.sessionStorage["userInfo"]) { 
     var credentials = JSON.parse($window.sessionStorage["userInfo"]); 
     $scope.login(credentials); 
}; 

/** Common login **/ 
$scope.login = function(credentials) { 

    $scope.error = false; 
    Auth.login(credentials, function(user) { 
     //success function 
     $mdDialog.hide(); 
     $state.go("admin-panel.default.home"); 
    }, function(err) { 
     console.log("error"); 
     $scope.error_des = err.msg; 
     $scope.error = true; 
    }); 
}; 

Все работает, как я ожидал, но в то время как reloding той же страница it'l всегда перенаправлять дома (http://localhost:3000/#/home).i знает, что это происходит из-за

$state.go("admin-panel.default.home"); 

мой вопрос, как и где дают условия для загрузки ту же страницу перезагрузки ??

+0

Кто запускает это -> $ scope.submit? –

+0

от имени входа в login-dialog.html – user3391137

+0

Устанавливаете ли вы иначе как $ urlRouterProvider.otherwise ('/'); или ваш домашний html путь – Shohel

ответ

0

может быть, у вас нет состояния входа в систему на вашем app.js файл. поэтому, когда вы находитесь на входе страница и обновить, вы перенаправляете на домашнюю страницу. Если это не ваша проблема, не читайте остальную часть моего ответа.

Итак, ниже я показываю фрагмент моего app.js, у меня есть все мои состояния там (мои перенаправления меню), и для последнего я использую функцию $ urlRouterProvider.otherwise для перенаправления пользователя всегда на экране входа, если они не вошли в систему.

Если мой пользователь, например, находится на , войдите в систему, независимо от того, сколько раз он перезагружает страницу, он всегда останется на странице входа.

Я использую эти модули $ stateProvider, $ urlRouterProvider, $ locationProvider и не по умолчанию $ маршрут по из angularjs.

После моих разных состояний я добавляю $urlRouterProvider.otherwise('/login'); в качестве последнего варианта, чтобы быть уверенным, что он не найдет ни одного скрытого или забытого URL-адреса.

angular.module('MainApp') 
.config(function ($stateProvider, $urlRouterProvider, $locationProvider) { 
    $stateProvider    
     .state('floorplan', { 
      url: '/floorplan/:activeEventId',    
      template: '......', 
      onEnter: function() { 
       //write code when you enter that state 
      }, 
      onExit: function() { 
      //write code when you change state 
      } 
     }) 
     .state('seating', { 
      url: '/seating', 
      template: '<div>Seating is under construction</div>' 
     }) 
     .state('event_details', { 
      url: '/event/details', 
      template: '<div>Event details is under construction</div>' 
     }) 
     .state('reports', { 
      url: '/reports', 
      template: '<div>Reports is under construction</div>' 
     }) 
     .state('login', { 
      url: '/login', 
      controller: 'LoginCtrl', 
      templateUrl: '/assets/modules/login/login.html', 
      onEnter: function() { 
      //write code when you enter that state 
      }, 
      onExit: function() { 
      //write code when you exit that state 
      } 
     }); 
    $urlRouterProvider.otherwise('login'); //when no route found redirect to login 
}); 

Надеюсь, что это поможет, удачи.

Смежные вопросы