2017-03-01 1 views
0

Ich versuche, Azure AD v1.0.14 in einer vorhandenen Angularjs-Anwendung zu verwenden, die ui.router verwendet, um Statusänderungen zu verwalten. Die gute Nachricht ist, dass ich mich erfolgreich anmelden und abmelden kann. Die schlechte Nachricht ist jedoch, dass meine App Probleme bei der Verwaltung von Statusänderungen hat. Diese Statusänderungen funktionierten, bevor ich das Azure AD-Modul in den Code integrierte.

function ($stateProvider, $urlRouterProvider, adalProvider) { 

    $urlRouterProvider.rule(function ($injector, $location) { 
     console.log("Requested URL path=" + $location.$$path); 
    }); 

    $urlRouterProvider.when('/home', '/home/app'); 
    $urlRouterProvider.when('/app', '/home/app');    
    $urlRouterProvider.otherwise(function ($injector, $location) { 
     console.log('$urlRouterProvider.otherwise redirecting to ' + $location.$$path); 
     var $state = $injector.get("$state"); 
     $state.go("login"); 
    }); 

    $stateProvider 
     .state("login", ...) 
     .state("home", { 
      abstract: true, 
      url: '/home', 
      requireADLogin: false, 
      templateUrl: 'home.html' 
     }) 
     .state("app", { 
      url: '/app', 
      requireADLogin: false, 
      templateUrl: 'app.html', 
      controller: 'app' 
     }) 
     .state("more", ...) 

} 

Zunächst Eintrag geht erfolgreich an die Login in Zustand/Controller (wo ich Login/Logout), sondern versucht zu $ ​​state.go ('App') oder ein manueller URL-Eintrag zu 'http://baseurl/#/home/app' ist automatisch über die .otherwise-Regel zurück zu "login" umgeleitet wurde, und es scheint, dass dies von Azure AD gemäß der Protokollausgabe unten getan wird.

Wed, 01 Mar 2017 22:56:38 GMT:1.0.14-VERBOSE: Location change event from http://localhost:3000/#/login to http://localhost:3000/#/home @state.js:12 
Requested URL path=/home @app.js:14 
Wed, 01 Mar 2017 22:56:38 GMT:1.0.14-VERBOSE: Location change event from http://localhost:3000/#/home to http://localhost:3000/#/home/app @state.js:12 
Requested URL path=/home/app @state.js:19 
$urlRouterProvider.otherwise redirecting to /home/app @app.js:14 
Wed, 01 Mar 2017 22:56:38 GMT:1.0.14-VERBOSE: Location change event from http://localhost:3000/#/home/app to http://localhost:3000/#/login @state.js:12 
Requested URL path=/login @state.js:12 

Meine Frage ist, warum sollte AD Azure Umleitung zurück zu anmelden? Kann Azure AD nicht mit abstrakten/verschachtelten Zuständen umgehen? Gibt es dafür eine Arbeit, weil unser Heimatstaat wesentlich ist?

+0

Hallo HidefLolife, hast du ein Update? –

Antwort

0

Als URL-Muster nach Raute „#“ für Client, Server dieses Teil nicht behandelt und die Umleitungs-URL werden ignoriert, können Sie versuchen html5 Modus in AngularJS zu verwenden:

// using '!' as the hashPrefix but can be a character of your choosing 
app.config(['$locationProvider', function($locationProvider) { 
    $locationProvider.html5Mode(true).hashPrefix('!'); 
}]); 

Kann Azure AD nicht mit abstrakten/verschachtelten Zuständen umgehen?

Sie können anonymousEndpoints in adal für js Konfiguration verwenden, wie:

adalAuthenticationServiceProvider.init({ 
    tenant: TENANT_ID, 
    clientId: CLIENT_ID, 
    anonymousEndpoints: ['public/'] //will not authorize for public pattern 
    }, 

Sie können weitere Informationen auf der 6-Punkt von https://github.com/AzureAD/azure-activedirectory-library-for-js#getting-started finden.