J'essaie de restreindre l'accès à certaines pages du répertoire public en utilisant le routage angulaire.
.when('/adminprofile', {
templateUrl: '../partials/adminprofile.html',
access: {restricted: true}
})
Je suis en train de lire ce que je crois est une propriété d'accès appelé que je déclarais, appelé accès
myApp.run(function ($rootScope, $location, $route, AuthService) {
$rootScope.$on('$routeChangeStart',
function (event, next, current) {
AuthService.getUserStatus()
.then(function(){
if (next.access.restricted && !AuthService.isLoggedIn()){
$location.path('/login');
$route.reload();
}
});
});
});
Mais ce que je reçois est cette erreur:
TypeError: next.access is undefined
Comment puis-je lire la propriété ou comment puis-je y parvenir d'une meilleure façon ?, Merci
EDIT:
Selon suggestion, j'ai changé le code et il semble que ce qui suit:
var myApp = angular.module('myApp', ['ngRoute']);
myApp.config(function ($routeProvider, $locationProvider) {
$routeProvider
.when('/', {
templateUrl: '../partials/home.html',
resolve: {
access: false
}
})
.when('/home', {
templateUrl: '../partials/home.html',
resolve: {
access: false
}
})
.when('/login', {
templateUrl: '../partials/login.html',
controller: 'loginController',
resolve: {
access: false
}
})
.when('/logout', {
controller: 'logoutController',
resolve: {
access: false
}
})
.when('/register', {
templateUrl: '../partials/register.html',
controller: 'registerController',
resolve: {
access: false
}
})
.when('/adminprofile', {
templateUrl: '../partials/adminprofile.html',
resolve: {
access: true
}
})
.otherwise({
redirectTo: '/'
});
});
Et j'ai ma fonction d'exécution:
myApp.run(function ($rootScope, $location, $route, AuthService) {
debugger;
$rootScope.$on('$routeChangeStart',
function (event, next, current) {
AuthService.getUserStatus()
.then(function(){
if (next.resolve.access && !AuthService.isLoggedIn()){
$location.path('/login');
$route.reload();
} else{
$location.path($route.current.originalPath);
}
});
});
});
Maintenant, je peux voir la valeur d'accès:
next.resolve.access
mais n'affiche rien, je cours en debug et peut voir Le chapeau est en train de passer par le callback $ routeChangeStart, whyyyyy ?? helppppp!
essayez et inspectez "next" ou connectez-vous à la console pour voir son contenu ... y a-t-il même un accès? – floor
Je ne faisais que déboguer en chrome et il dit indéfini quand je passe dessus – Juanca
est en fait un Object: params {}, pathParams {}, _proto_: Object – Juanca