adalProvider.init(..) нарушение маршрутизации

Таким образом, согласно этому руководству и рабочему примеру, Раньше у меня был вызов этой функции в моем файле app.js (в котором маршрутизация работает отлично):

app
    .config([
            '$routeProvider', '$httpProvider', 'adalAuthenticationServiceProvider',
            function($routeProvider, $httpProvider, adalProvider) {
                $routeProvider
                    .when('/home',
                        {
                            templateUrl: '/app/views/home.html',
                            caseInsensitiveMatch: true
                        })
                    .when('/passwordReset',
                        {
                            templateUrl: '/app/views/passwordReset.html',
                            controller: 'ResetRequestController as vm',
                            requireAdLogin: true,
                            caseInsensitiveMatch: true
                        })
                    .when('/userSearch',
                        {
                            templateUrl: '/app/views/userSearch.html',
                            controller: 'UserSearchController as vm',
                            requireAdLogin: true,
                            caseInsensitiveMatch: true
                        })
                    .otherwise({ redirectTo: '/home' });

            }
        ]
    );

... Но добавив следующий код, как того требует учебник, и добавив эту строку (сразу после .otherwise({ redirectTo: '/home' });:

adalProvider.init(
    {
        instance: 'https://login.microsoftonline.com/',
        tenant: '...', //Removed
        clientId: '...', //Removed
        extraQueryParameter: 'nux=1',
        //cacheLocation: 'localStorage', // enable this for IE, as sessionStorage does not work for localhost.
    },
    $httpProvider
);

... Я получаю следующие ошибки:

angular.js:13424 Ошибка: [$compile:tpload] Не удалось загрузить шаблон: app/views/_header.html (статус HTTP: не определено не определено) http://errors.angularjs.org/1.5.3/$compile/tpload?p0=app%2Fviews%2F_header.html&p1=undefined&p2=undefined в angular.js:68 ...[обрезано пользователем для удобочитаемости]

angular.js: 13424 TypeError: невозможно прочитать свойство «push» неопределенного в routeChangeHandler (adal-angular.js: 213) ... [усечено пользователем для удобства чтения]

angular.js:13424 Ошибка: [$compile:tpload] Не удалось загрузить шаблон: /app/views/home.html (статус HTTP: не определено не определено) http://errors.angularjs.org/1.5.3/$compile/tpload?p0=%2Fapp%2Fviews%2Fhome.html&p1=undefined&p2=undefined в angular.js :68 ...[обрезано пользователем для удобочитаемости]

Несколько вопросов StackOverflow уже касаются сообщений об ошибках № 1 и № 3, но они предлагают подтвердить правильность маршрутов. Я не только подтвердил, что файлы есть (путем прямого указания на них браузера), но, как упоминалось ранее, просто не имея adalProvider.init(..), маршруты возвращаются в нормальное состояние.

Я использую последнюю версию adal.js и adal-angular.js, включенную в пакет npm версии 1.0.10.

Что мне здесь не хватает? Что я могу исправить, чтобы вернуть маршрутизацию в рабочее состояние при реализации adalProvider.init(..)?


person Ranger    schedule 16.06.2016    source источник


Ответы (1)


Была аналогичная проблема с Angular/Adal.js. Я использую ui-router вместо ng-route, попытался переключиться на ng-route, чтобы посмотреть, решит ли это проблему (думал, что это как-то связано с разрешением URI шаблона), но проблема осталась. Я думаю, что мое решение может сработать и для вас, поскольку оно, похоже, связано не с маршрутизацией, а с конфигурацией adal.

Обновлен мой конфиг с анонимными конечными точками, партиалы которых не защищены аутентификацией:

    var anonymousEndpoints = [
      'partials/public/'
    ];

    var endpoints = {
      // Map the location of a request to an API to a the identifier of the associated resource
      'https://contosotogo.azurewebsites.net/': 'https://contoso.onmicrosoft.com/ToGoAPI'
    };

 adalAuthenticationServiceProvider.init(
   {
     tenant: '__removed__',
     clientId: '__removed__',
     anonymousEndpoints: anonymousEndpoints, // Added this
     endpoints: endpoints
   },
   $httpProvider
 );

Я полагаю, что шаблоны хранятся в кеше шаблонов Angulars с помощью неизвестного ключа/статуса и не могут быть получены без аутентификации. Поскольку им не нужна аутентификация, я их вытащил. Похоже, это также решило проблему бесконечного зацикливания при обновлении токенов с истекшим сроком действия (https://github.com/AzureAD/azure-activedirectory-library-for-js/issues/216).

Честно говоря, я столкнулся с множеством проблем при реализации adal.js. Заставить вещи работать было усилием, прочесывая stackoverflow/github и странный учебник/пример...

Надеюсь поможет, ура

person Joran    schedule 04.07.2016
comment
Здравствуйте, я все еще сталкиваюсь с той же проблемой, мой маршрут не работает после включения инициализации. Я добавил конечные точки и анонимные конечные точки следующим образом: var анонимные конечные точки = ['requeue/app/template/']; var endpoints = { // Сопоставляем расположение запроса к API с идентификатором связанного ресурса 'contosotogo.azurewebsites .net': 'contoso.onmicrosoft.com/ToGoAPI' }; Теперь я получаю следующую ошибку angular.js: 14700 TypeError: Не удается прочитать свойство «данные» null (…) Возможно, необработанный отказ: {} Не могли бы вы помочь мне в этом? - person Alok Adhao; 23.11.2017