2016-12-29 5 views
0

이것은 내가이 같은 AppController가이이오니아 앱 글로벌 AppCtrl이 맞습니까?

<body ng-app="app" ng-controller="AppCtrl"> 
    <div id="inner" ng-view="" ></div> 
</body> 

를 앱 컨트롤러에 그들이이

같은 다른 응용 프로그램의 일부, 로 리디렉션 사용자가 어떤 하나의 코드에 도달 이번 주에 세 번째 시간입니다
.controller("AppController",function({$location}{ 
    if(isUserAthenticated){ 
     $location.path("/home"); 
    }else{ 
     $location.path("/login") 
    } 
}); 

올바른 방법입니까? 왜냐하면 그것은 나에게 보이지 않기 때문입니다. 나는이 접근법이 매우 해킹 된 것을보고 그것을 할 올바른 방법이 있어야한다. 혹시 이런 종류의 시나리오를 처리하기 위해 최선의 권장 방법을 알려 주실 수 있습니까?

UPDATE : 귀하의 각도 앱의 .config() 방법 내부

: 라우팅 설정

// delete $httpProvider.defaults.headers.common["Access-Control-Request-Headers"]; 
    $routeProvider 
     .when('/app', { 
      templateUrl: 'views/login.html', 
      controller: 'AppCtrl' 
     }). 
    when('/privados', { 
     templateUrl: 'views/privados.html', 
     controller: 'PrivadosCtrl as ctrl' 
    }). 
    when('/mensaje/:id', { 
     templateUrl: 'views/mensaje.html', 
     controller: 'MensajeCtrl as ctrl' 
    }). 
    when('/grupales', { 
     templateUrl: 'views/grupales.html', 
     controller: 'GrupalesCtrl as ctrl' 
    }). 
    when('/comunicados', { 
     templateUrl: 'views/comunicados.html', 
     controller: 'ComunicadosCtrl as ctrl' 
    }). 
    when('/contactos', { 
     templateUrl: 'views/contactos.html', 
     controller: 'ContactosCtrl' 
    }). 
    when('/perfil', { 
     templateUrl: 'views/perfil.html', 
     controller: 'PerfilCtrl' 
    }). 
    when('/principal', { 
     templateUrl: 'views/principal.html', 
     controller: 'PrincipalCtrl as ctrl' 
    }). 
    when('/nmensaje/:type', { 
     templateUrl: 'views/nmensaje.html', 
     controller: 'NMensajeCtrl as ctrl' 
    }). 
    when("/user/password",{ 
     templateUrl:"views/passwordreset.html", 
     controller: "ResetPasswordCtrl as ctrl" 
    }). 
    otherwise({ 
     redirectTo: '/app' 
    }); 
+0

라우트 설정을 공유해 주실 수 있으니 답안에 모두 포함시켜주십시오. –

+0

이 코드는 제 것이 아니며, 어떤 코드가 제게주는 레거시 코드입니다. 하지만 어쨌든 나는 경로 구성을 공유하고있다. –

답변

0

내가 각도 응용 프로그램의 인증을 관리하는 것으로 가장 좋은 방법은 다음과 같다

//this event will be fired in every location change. 
$rootScope.$on('$routeChangeSuccess', function(e, toState, fromState) { 
      if (toState.loginRequired) { 
       if (!isUserAthenticated()) { 
        e.preventDefault(); 
        $location.path('/login'); 
       } 
      } 
     }); 

경로에서 로그인에 필요한 경로를 지정할 수 있습니다 :

when('/nmensaje/:type', { 
    templateUrl: 'views/nmensaje.html', 
    controller: 'NMensajeCtrl as ctrl',   
    loginRequired: true 
}). 
when("/user/password",{ 
    templateUrl:"views/passwordreset.html", 
    controller: "ResetPasswordCtrl as ctrl", 
    loginRequired: true 

}). 

또한 사용자의 인증 상태를 관리하기 위해 각도 공장을 만들 수 있습니다.

이 방법을 사용하면 AppCtrl이 필요하지 않습니다.