0

Angular JS SDK의 lb-services를 사용하여 기본 서비스를 만들고 있는데 현재 로그 아웃에 문제가 있습니다 & rememberMe 기능.lb-services (Loopback-Angular JS SDK) 사용시 문제가 발생했습니다.

Angular Javascript SDK & Loopback getting started intermediate입니다. 인증 방법은 예제와 동일하며 일부 조정을 통해 응용 프로그램에 적용 할 수 있습니다.

나는 그것을 설명하는 방법을 잘 모르겠지만, 여기 내 로그 아웃 & 기억 기능에 대한 코드의 일부입니다 내 stateProvider

, 내 루트 응용 프로그램으로 상태의이 종류가

.state('app', {     
url:'/', 
abstract: true,     
views:{      
'bodyLogin': {templateUrl : 'views/login/body.html',    
controller : 'BodyController'},      
'bodyMain': {templateUrl : 'views/main/body.html',       
controller : 'BodyController'}}    
}) 
.state('app.mainUnreg', {     
url:'home',     
views: {      
'[email protected]': {       
templateUrl : 'views/login/home.html'      
}}}) 
.state('app.mainReg', {    
url:'mainMenu',     
views: {      
'[email protected]': {       
templateUrl : 'views/main/header.html'      
},      
'[email protected]': {       
templateUrl : 'views/main/sidebar.html'      
},      
'[email protected]': {       
templateUrl : 'views/main/home.html'      
},      
'[email protected]': {      
templateUrl : 'views/main/footer.html'      
}},     
controller: 'HomeController'}) 

index.html을

<div ng-if="!loggedIn" ui-view="bodyLogin" class="site-wrapper" ui-sref-active="app.mainUnreg"></div>   
<div ng-if="loggedIn" ui-view="bodyMain" ui-sref-active="app.mainReg"></div> 

때문에, 로그인하지 않은 상태에서 bodyLogin을 입력하면 로그인 템플릿이 표시됩니다. 그렇지 않으면 로그인 한 상태에서 bodyMain을 입력합니다

로그인에 성공했습니다. 내 메인 페이지에, 그러나 여기에, 그것은 때문에 내 bodyController에서, 인증 된해야

.controller('BodyController', [..., function(...){  
//this line is to check whether the user has been authenticated or not 
if(Account.isAuthenticated() === false) {   
$scope.loggedIn = false;}  
// ------------ 

if($scope.loggedIn === false){   
$scope.layout = 'login'; 
$state.go('app.mainUnreg'); 
} 
else{$scope.loggedIn = true; 
$scope.layout = 'styles'; 
$state.go('app.mainReg');  
}}]) 

.controller('LoginController', [..., function (...) { $currentUserId = Account.getCurrentId();  
$scope.$stateParams = $stateParams; $scope.loginData = {}; $scope.doLogin = function() {    AuthService.login($scope.loginData)   
.then(function() {    
$scope.loggedIn = true;      
location.reload();  }); };}]) 

.controller('LogoutController', [..., function(...) { 
AuthService.logout() 
.then(function() { 
console.log("Logging out . . ."); 
$scope.loggedIn = false; 
$state.go('app');  });  }]); 
And some additional service beside lb-services.js to handle my authentication, 

function login(loginData) { 
     var params = { rememberMe: loginData.rememberMe }; 
     var credentials = { 
      email: loginData.email, 
      password : loginData.password 
     }; 
     return User 
      .login(params, credentials) 
      .$promise.then(function(response){    $rootScope.currentUser = {...}; 
       console.log($rootScope.currentUser); 
      }, 
      function(response) { 
       console.log(response); 
      }); 
    } 
    function logout(){ 
     return User 
     .logout() 
     .$promise.then(function(){ 
      $rootScope.currentUser = null; 
     }); 
    }; 

나는 특히 내가

if(Account.isAuthenticated() === false){...} 

으로 점검 한 코드의 이런 종류의 생각 내 메인 페이지에 들어가면 성공적으로 로그인하고 인증했습니다. 나는 안 했어?

내 메인 페이지 app.mainReg의 상단 div에 ng-show="Account.isAuthenticated()"을 넣으려고하면 내 페이지가 표시 될 수 없지만 내 계정이 인증되지 않았 음을 나타내며 루프백이 토큰을 성공적으로 저장했음을 의미합니다. 사용자 ID 및 다음과 같은 로컬 저장소의 rememberMe 부울

$LoopBack$accessTokenId = .... 
$LoopBack$currentUserId = ... 
$LoopBack$rememberMe = true // automatically become true? 

그래서이 문제를 해결하는 방법을 아는 사람이 있습니까? 나는 문제가 인증에 있다고 생각한다.

나는이 하나와 아주 혼동 스럽다. 나는 해결책을 찾으려고 노력했지만 아직 찾을 수있다.

내가 넣어, 바보 같은 실수를하기 때문에

답변

0
내가에서 rememberme 기능을 사용할 수없는 이유를 난 그냥 실현

, 그건 그냥 ";"내 부가 서비스

에서 여러 테스트 후 내 로그 아웃 기능을 한 후, 그것은 보인다 내 문제는 내 주 공급자에게 있었다. 내 컨트롤러와 주 공급자를 조정하여 마침내 성공적으로 작동했습니다.

관련 문제