Angesichts der folgenden Zustand in ui-Router:
.state('some.state', {
url: '/some/:viewType',
templateUrl: 'myTemplate.html',
controller: 'SomeStateController',
controllerAs: 'vm',
data: {
authorizedFor: [SOME_ROLE]
}
}
Ich versuche, die „Daten“ Objekt für einen Zustand zu verwenden, steuern den Zugriff auf autorisierte zu helfen Zustände. Getrennt handle ich mit dem Ereignis $ stateChangeStart, um data.authorizedFor zu betrachten und entsprechend zu handeln.
Das Problem besteht jedoch darin, dass sich die Liste der autorisierten Rollen basierend auf dem Wert von: viewType ändern kann. Ich dachte, ich könnte Daten: {} eine Funktion sein, injizieren $ stateParams und die Logik dort behandeln ... aber das wird nicht tun.
Also habe ich versucht, stattdessen das params-Objekt zu verwenden, aber an der $ stateChangeStart-Zeit ist der: viewType noch nicht von $ state.params oder $ stateParams erreichbar.
Als ich in den Entwicklungswerkzeugen durchgegangen bin, habe ich bemerkt, dass $ state.transitionTo.arguments gefüllt ist, aber es scheint furchtbar hacky zu sein, diese Route zu gehen.
params: {
authorizedFor: function($state) {
console.log($state.transitionTo.arguments[1].viewType); // has value I need
}
}
Irgendwelche Vorschläge?
Danke für die Empfehlung, aber ich versuche, insgesamt gehe an die Steuerung zu vermeiden. Ich will nicht, dass der UI-Router mich in den neuen Zustand versetzt, wenn der Benutzer keinen Zugriff hat. –
in Bezug auf ui-Route-Authentifizierung mit Beispiel lösen, besuchen Sie bitte den folgenden Link: http://StackOverflow.com/Questions/22537311/angular-Ui-Router-Login-Authentication –