2014-11-10 1 views
2

Доброе утро, я создаю приборную панель в AngularJS с множеством функций. Этот сайт является многопользовательским приложением, поэтому каждый пользователь чаще всего использует его перед его использованием. С AngularJS я могу определить только одно ng-приложение и один ng-view, но мне нужно иметь шаблон для страниц входа (логин, потерянный пароль, встроенный мастер и т. Д.) И еще один шаблон для страниц панели мониторинга, который появляется после успешного ввода (пользователь управление, настройки). Я использую аутентификацию по токенам. Как я могу выполнить эту задачу? Теперь я triyng, чтобы скрыть элементы, такие как заголовок и левое меню, когда пользователь не зашел в систему, но я не считаю это хорошим решением.Форма регистрации AngularJS отделена от ng-app

+0

Вы получите лучшую помощь, показывая, что вы уже пробовали, и указывая на то, где вы застряли или возникли проблемы. – Phil

+0

** ng-if ** поможет вам решить множество проблем. Вам просто нужно объявить государство. i.e ** вышло **, ** вошел в систему ** и соответственно переключил html. – Coldstar

+0

добавить перехватчик для $ routeChange, а затем добавить логику, чтобы ограничить v/s auth-маршруты – harishr

ответ

1

Сначала вы можете иметь несколько ng-приложений на одной странице. Но вам придется выполнять ручную загрузку. Поскольку только первое ng-приложение автоматически загружается Angular. Посмотри на этом стек перелив обсуждении

AngularJS Multiple ng-app within a page

Для добавления маркеров авторизации на ваши запросы, вы должны будете использовать перехватчики. Вот пример кода для перехватчика из книги «angularjs и работает»

angular.module('notesApp', []).factory('AuthInterceptor', ['AuthInfoService', '$q', 
function(AuthInfoService, $q) { 
    return { 
     request : function(config) { 
      if (AuthInfoService.hasAuthHeader()) { 
       config.headers['Authorization'] = AuthInfoService.getAuthHeader(); 
      } 
     return config; 
    }, 
    responseError : function(responseRejection) { 
     if (responseError.status === 403) { 
      // Authorization issue, access forbidden 
      AuthInfoService.redirectToLogin(); 
     } 
     return $q.reject(responseRejection); 
    } 
}; 
}]).config(['$httpProvider', 
function($httpProvider) { 
    $httpProvider.interceptors.push('AuthInterceptor'); 
}]); 
+0

Является ли $ rootScope общим между двумя ng-приложениями? – user2100125

+0

Нет. Я так не думаю. Для разных ng-приложений размер корня будет отличаться. –

+0

Hv вы пытались использовать u-router вместо ng-route? ui-router основан на состоянии вместо маршрутов. И вы можете преодолеть ограничение одиночного ng-представления. –

Смежные вопросы