2016-08-22 1 views
1

Ich habe ein Problem, das ich nicht herausfinden kann. Ich versuche zu verhindern, dass nicht authentifizierte Benutzer auf meine Webanwendung zugreifen. Wenn ich versuche, eine eingeschränkte Seite (Beispiel/Profil) zu besuchen, ändert sich die URL der Anwendung in/login, aber mein Preloader lädt den Status weiter. Wenn ich die Seite hart aktualisiere, wird die Anmeldeseite korrekt geladen.Angular UI-Router: URL ändert sich, aber die Ansicht wird geladen (Preloader)

Wenn ich eingeloggt bin und meinen Token manuell lösche und den Status ändere, indem ich auf einen Link klicke, leitet mich der ui-router auch auf die Anmeldeseite um.

So tritt das Problem nur auf, wenn nicht eingeloggte Benutzer versuchen, auf die Webanwendung per URL zuzugreifen (www.example.com/#/profile).

Ich denke, es ist etwas klein, aber ich habe wirklich keine Ahnung, wo sie suchen müssen ...

App.states.js

.state("restricted", { 
       abstract: true, 
       url: "", 
       templateUrl: 'app/views/restricted.html', 
       resolve: { 
        deps: ['$ocLazyLoad', function ($ocLazyLoad) { 
         return $ocLazyLoad.load([ 
          'lazy_uikit', 
          'lazy_selectizeJS', 
          'lazy_switchery', 
          'lazy_prismJS', 
          'lazy_autosize', 
          'lazy_iCheck', 
          'lazy_themes', 
          'sweetAlert' 
         ]); 
        }] 
       }, 
       data: { 
        authenticationRequired: true 
       } 
      }) 

App.js

$rootScope.$on('$stateChangeStart', function (event, toState, toParams, fromState, fromParams) { 

      console.log(toState.data.authenticationRequired); 

      if(toState.data.authenticationRequired){ 
       if(!AuthService.isAuthenticated()){ 
        event.preventDefault(); 
        $state.go('login'); 
       } 
      } 


      // main search 
      $rootScope.mainSearchActive = false; 
      // secondary sidebar 
      $rootScope.sidebar_secondary = false; 
      $rootScope.secondarySidebarHiddenLarge = false; 
      // full header 
      $rootScope.fullHeaderActive = true; 
      // accordion mode in Menu 
      $rootScope.menuAccordionMode = true; 

      if($($window).width() < 1220) { 
       // hide primary sidebar 
       $rootScope.primarySidebarActive = false; 
       $rootScope.hide_content_sidebar = false; 
      } 
      if(!toParams.hasOwnProperty('hidePreloader')) { 
       $rootScope.pageLoading = true; 
       $rootScope.pageLoaded = false; 
      } 

     }); 
+0

Warum nicht Werfen Sie einen Blick auf Ihre Debugger-Konsole? Gibt es einen Fehler? –

+0

@BiswajitPanday Vielen Dank für Ihre schnelle Antwort, nichts ist in de Dev-Konsole gedruckt. – Jornve

+0

Da Ihre Frage nicht klar ist, versuchen Sie einfach "abstract" zu entfernen: true vom Staat. Es scheint, dass die URL kein abstrakter Elternteil einer Kinder-URL ist. –

Antwort

1

fand ich die Lösung, justieren $ state.go ('Login') mit

$state.transitionTo('login', {}, { reload: true, inherit: true, notify: true}); 
Verwandte Themen