2017-02-24 8 views
0

Ich begann mit Angular und bin total verloren.Angular: Handle Umleitung auf Login-Seite

Für den Anfang rufe ich eine einfache Rest-GET-Anfrage. Das Problem ist, dass sich das Ziel hinter einer externen Anmeldeseite befindet. Also wird meine Anfrage auf die externe Seite umgeleitet und meine Anwendung schlägt fehl.

Was ich möchte, ist diese Seite zu öffnen Ich werde umgeleitet. Und nachdem die Anmeldung erfolgreich war, sollte ich zur ersten angeforderten Seite weitergeleitet werden (aber das sollte von der externen Seite getan werden, denke ich).

Der mein Code so weit nicht wirklich fortgeschritten, aber hier ist es:

var app = angular.module('webUI', []) 
app.controller('Rest', function($scope, $http) { 
    $http.get('https://test/rest/monitoring') 
     .then(function successCallback(response) { 
       $scope.rest = response.data; 
      }, function errorCallback(response){ 

      }); 
}); 

Gibt es eine einfache Winkel Funktion vermisse ich, das würde das tun, was ich suche?

Edit: Hier ist die Fehlermeldung, die ich in meiner Browser-Konsole sehen (Chrom-> F12):

Redirect von 'https://test/rest/monitoring' auf 'https://someExternalURL/internal/login?TYPE=somethingVeryLong' wurde von CORS Politik blockiert: Nein ‚Zugang Der Header "Control-Allow-Origin" ist auf der angeforderten Ressource vorhanden. Origin 'null' ist daher nicht erlaubt.

Antwort

0

Sie müssen Ihre umgeleitete URL in successCallback-Funktion innerhalb $ location.path ('/ someNewPath') ;. Sie müssen Abhängigkeiten für $ location in Ihren Controller injizieren.

 var app = angular.module('webUI', []) 
     app.controller('Rest', function ($scope, $http, $location) { 
      $http.get('https://test/rest/monitoring') 
       .then(function successCallback(response) { 
        $scope.rest = response.data; 
        $location.path('/someNewPath'); 
       }, function errorCallback(response) { 

       }); 
     }); 
+0

Danke für die schnelle Antwort. Aber wie bekomme ich die URL, an die ich weiterleiten werde? In meinem Fall ist '/ someNewPath' nicht immer gleich. Wo kann ich die URL extrahieren, an die ich weitergeleitet wurde? Außerdem habe ich versucht, Ihre Lösung mit nur, wie Sie es gepostet, und erwartet eine Umleitung zu/someNewPath. Ich habe nur "#/someNewPath" zu meiner tatsächlichen URL hinzugefügt, anstatt irgendwo umzuleiten. Und das hat nur funktioniert, nachdem ich die Zeile zu meinem "errorCallback" hinzugefügt habe. Ich habe meinen ersten Beitrag bearbeitet und die Fehlermeldung von meiner Browserkonsole (Chrome -> F12) – kinglite

+0

hinzugefügt. Sie können den folgenden Zeilencode in Ihrem App_Start-Ordner webapiconfig.cs verwenden. HttpConfiguration-Konfiguration; var cors = new EnableCorsAttribute ("*", "*", "*"); config.EnableCors (cors); –

0

Sie Winkel Routing verwenden sollten, sehen, warum hier https://www.w3schools.com/angular/angular_routing.asp und hier ein gutes Beispiel https://ui-router.github.io/ng1/tutorial/helloworld, sobald Sie Ihre Routen Config Sie dies tun können:

var app = angular.module('webUI', []) 
app.controller('Rest', function($scope, $http) { 
    $http.get('https://test/rest/monitoring') 
     .then(function successCallback(response) { 
       $scope.rest = response.data; 
       $state.go('login'); 
      }, function errorCallback(response){ 

      }); 
}); 
+0

Ich verstehe nicht, wie Routing mir helfen wird, weil es nur scheint, auf lokalen Ressourcen zu arbeiten. Aber wenn das möglich wäre, wie könnte ich die URL erhalten, an die ich weitergeleitet werde, und diese in meiner Routing-Regel verwenden? Soweit ich sehe, basiert das Routing auf festen Links und öffnet lokale Ressourcen. – kinglite