2016-09-13 15 views
5

[email protected]'a yükseltiyorum ve gerekli izinlere sahip değilse, kullanıcıyı farklı bir duruma yönlendirmenin en iyi yolunun ne olduğunu bulmaya çalışıyorum.UI-Router 1.0 yönlendirmesi kullanıcı rolüne bağlı olarak

Bu benim ne var:

.state('company_dashboard', { 
    url: '/dashboard', 
    templateUrl: 'dashboard.html', 
    controller: 'CompanyDashboardCtrl', 
    resolve: { 
     user: function(UserService) { 
      return UserService.getActiveUser(); 
     }, 
     company: function(UserService) { 
      return CompanyService.getActiveCompany(); 
     }, 
     permissions: function(CompanyService, user, company){ 
      return CompanyService.getUserPermissions(company, user); 
     } 
    }, 
    onEnter: function($state, permissions) { 
     if (permissions.canAccessDashboard === false) 
      return $state.go('company_landing_page'); 
    } 
}) 

Yukarıdaki örnek çalışır, ancak aşağıdaki hatayı kaydeder: ben, daha iyi bir yolu olmalı düşündürüyor TransitionRejection(type: 2, message: The transition has been superseded by a different transition, detail: Transition#1(''{} -> 'company_landing_page'{})).

Yan soru, resolve sırasında izinleri denetlemek iyi bir uygulama mı?

GÜNCELLEME:

konsol hatası kurtulmak için bana yardımcı $state.go()$state.target() için değiştiriliyor. This comment yardım etti. Soru duruyor olsa da, ben bunu doğru yer mi yapıyorum?

.state('company_dashboard', { 
    data: { 
      requiresAuthentication: true 
    } 
} 

Ve sonra: Ben daha parlak olabilir eminim bile

app.run(function ($rootScope, $state) { 
    $rootScope.$on('$stateChangeStart', function (event, toState, toParams) { 
     // Check if user is authenticated 
     // And route requires authentication 
     if (!toState.data.requiresAuthentication) { 
      $state.go(toState.name, toParams); 
     } else if (user && toState.data.requiresAuthentication) { 
      $state.go(toState.name, toParams); 
     } else { 
      $state.go('login'); 
     } 
    }); 
}); 

Bu oldukça iyi iş gibi görünüyor, şöyle

+0

İlkbaharda ya da bir arka plan çerçevesinde oluşturulmuş şablondaki izinleri kontrol ederdim, bence herkesin kodu görebileceğinden ön taraftaki izinleri kontrol etmek iyi olmaz. –

cevap

1

Ben senin durumuna veri özelliği eklemek istiyorum ama umarım bu nasıl ilerleyebileceğiniz hakkında size bir fikir verir.

İlgili konular