2016-09-14 58 views
0

我遇到了这个问题的解决方案,但我可能没有正确实施它,或者它不是解决方案。问题是我需要登录两次。 我试过使用$scope.$apply()但我不知道我是否正确使用它。 我的登录控制器:必须登录两次:angular js

app.controller('loginctrl',['$rootScope','$scope','$http','$state','$cookies',function($scope,$rootScope,$http,$state,$cookies){ 
var cookietoken= $cookies.get('Token'); 

if(cookietoken) 
{ 
    alert('You are already logged in!'); 
    $state.go('home'); 
} 
else 
{ 
    $scope.user={ 
     username:"", 
     password:"", 
     rememberme:"" 
    }; 
    $scope.showerror=false; 

    $scope.login = function(){ 
     $http({ 
      method:"POST", 
      url:$rootScope.apiend+'login', 
      data:$scope.user 
     }) 
     .success(function(result){ 
      console.log(result); 

     }).error(function(){ 
      alert('something looks wrong.'); 
     }); 
    }; 
} 

}]);

编辑: 页面最初进入错误的方法,第一次,并显示第二次

+0

要实现这个代码,以及如何究竟是什么不起作用?浏览器的JavaScript控制台中是否有错误消息? –

+0

没有错误消息,我想通过此页面登录,它的工作原理除了一个原因:第一次尝试登录并在第二次登录后页面重新加载' – uttejh

+0

您是否在网页上有CSRF并且支持在服务器端?请在表单上添加更多关于登录页面和服务器配置的详细信息。 –

回答

0

我只是猜测成功的方法,但我相信,当login函数被调用,它成功地将您登录到“服务器部分”上,但客户端上的success方法无非是将结果写入控制台,而当您第二次尝试时,它会检查您是否已记录(检查cookietoken),如果是这样,将您发送到“主页”页面。

如果是这样的话,那么你只需要添加行$state.go('home');一旦登录已经成功,在success方法:

app.controller('loginctrl',['$rootScope','$scope','$http','$state','$cookies',function($scope,$rootScope,$http,$state,$cookies){ 
var cookietoken= $cookies.get('Token'); 

if(cookietoken) 
{ 
    alert('You are already logged in!'); 
    $state.go('home'); 
} 
else 
{ 
    $scope.user={ 
     username:"", 
     password:"", 
     rememberme:"" 
    }; 
    $scope.showerror=false; 

    $scope.login = function(){ 
     $http({ 
      method:"POST", 
      url:$rootScope.apiend+'login', 
      data:$scope.user 
     }) 
     .success(function(result){ 
      console.log(result); 
      $state.go('home');    /* <-- add this line here */ 

     }); 
    }; 
} 
}]); 
+0

nope!这不是它正在发生的事情。尽管我尝试过。感谢您的努力! – uttejh

+0

你看到在JavaScript控制台中打印的结果吗?或者至少发送到服务器的ajax请求?是从第一次登录尝试设置的令牌cookie? –

+0

控制台第一次保持空白,并且结果正在第二次打印,并且第一次尝试也没有设置cookie。我修改了一下我的代码。是! ajax请求正在发送到服务器 – uttejh