Как переключить URL в зависимости от условия в angularjs?

0

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

/** 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;
    });
};

Все работает так, как я ожидал, но, переписывая одну и ту же страницу, он всегда перенаправляется на домашнюю страницу (http://localhost: 3000/#/home). I знаю, что это происходит из-за

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

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

  • 0
    Кто запускает это -> $ scope.submit?
  • 0
    из кнопки входа в систему login-dialog.html
Показать ещё 4 комментария
Теги:
angular-ui-router

1 ответ

0

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

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

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

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

После моих разных состояний я добавляю $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
});

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню