Hallo Ich bin neu in AngularJS und habe versucht, den Zugriff auf bestimmte Zustände basierend auf Benutzerkriterien zu verhindern.Angular Ui-Router: Wie man den Zugang zu einem Zustand zu verhindern
This, from ui-router's FAQ beschreibt genau das, was ich tun möchte, aber ich kann es nicht richtig funktionieren. Was muss ich aber im Datenobjekt genau dazu tun?
(sah ich jemanden in „true“ auf einigen Blog-Post Tutorial werfen und wie verwenden es, wie ich, aber das scheint nicht, weil ich einen Fehler zu arbeiten, die needAdmin sagt nicht definiert ist) Hier
ist mein Code:
angular.module('courses').config(['$stateProvider',
function($stateProvider) {
// Courses state routing
$stateProvider.
state('listCourses', {
url: '/courses',
templateUrl: 'modules/courses/views/list-courses.client.view.html'
}).
state('createCourse', {
url: '/courses/create',
templateUrl: 'modules/courses/views/create-course.client.view.html',
data: {
needAdmin: true
}
}).
state('viewCourse', {
url: '/courses/:courseId',
templateUrl: 'modules/courses/views/view-course.client.view.html'
}).
state('editCourse', {
url: '/courses/:courseId/edit',
templateUrl: 'modules/courses/views/edit-course.client.view.html',
data: {
needAdmin: true
}
});
}
]);
angular.module('courses').run(['$rootScope', '$state', 'Authentication', function($rootScope, $state, Authentication) {
$rootScope.$on('$stateChangeStart', function(e, to) {
var auth = Authentication;
console.log(auth.user.roles[0]);
if (to.data.needAdmin && auth.user.roles[0] !== 'admin') {
e.preventDefault();
$state.go('/courses');
}
});
}]);
Die Benutzeroberfläche sollte nicht die Links zu den Seiten an erster Stelle haben, richtig? – cgatian
@cgatian Ich weiß nicht ... Könnten Sie bitte näher ins Detail gehen? – spuleri