2015-11-02 69 views
0

现在我正在处理angularjs,我是新手。我一直在为每个$ http请求和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');作为最后一个选项,以确保他不会找到任何其他隐藏或遗忘的网址。

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

我希望有帮助,祝你好运。