adalProvider.init(..) melanggar perutean

Jadi berdasarkan tutorial dan contoh kerja ini, Saya sebelumnya memiliki panggilan fungsi ini di file app.js saya (yang peruteannya berfungsi dengan baik):

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' });

            }
        ]
    );

...Tetapi dengan menambahkan kode berikut sesuai permintaan tutorial dan menambahkan baris ini (tepat setelah .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
);

...Saya mendapatkan kesalahan berikut:

angle.js:13424 Kesalahan: [$compile:tpload] Gagal memuat templat: app/views/_header.html (status HTTP: tidak terdefinisi tidak terdefinisi) http://errors.angularjs.org/1.5.3/$compile/tpload?p0=app%2Fviews%2F_header.html&p1=undefinisi&p2=tidak terdefinisi di sudut.js:68 ...[dipotong oleh pengguna agar mudah dibaca]

angle.js:13424 TypeError: Tidak dapat membaca properti 'push' yang tidak ditentukan di ruteChangeHandler (adal-angular.js:213) ...[dipotong oleh pengguna agar mudah dibaca]

angle.js:13424 Kesalahan: [$compile:tpload] Gagal memuat template: /app/views/home.html (status HTTP: tidak terdefinisi tidak terdefinisi) http://errors.angularjs.org/1.5.3/$compile/tpload?p0=%2Fapp%2Fviews%2Fhome.html&p1=undefinisi&p2=tidak terdefinisi di sudut.js :68 ...[dipotong oleh pengguna agar mudah dibaca]

Beberapa pertanyaan StackOverflow sudah menjawab pesan kesalahan #1 dan #3, tetapi pertanyaan tersebut menyarankan untuk mengonfirmasi bahwa rutenya benar. Saya tidak hanya mengonfirmasi bahwa file-file tersebut ada di sana (dengan mengarahkan langsung browser ke file tersebut), tetapi seperti yang disebutkan sebelumnya, adalProvider.init(..) rutenya tidak kembali normal.

Saya menjalankan adal.js dan adal-angular.js versi terbaru yang disertakan dalam paket npm versi 1.0.10.

Apa yang kulewatkan di sini? Apa yang dapat saya perbaiki untuk mengembalikan perutean ke perintah kerja sambil tetap menerapkan adalProvider.init(..)?


person Ranger    schedule 16.06.2016    source sumber


Jawaban (1)


Punya masalah serupa dengan Angular/Adal.js. Saya menggunakan ui-router alih-alih ng-route, mencoba menukar ke ng-route untuk melihat apakah ini akan memperbaiki masalah (menurut saya ini ada hubungannya dengan penyelesaian URI templat), tetapi masalahnya tetap ada. Saya pikir solusi saya dapat bekerja untuk Anda juga, karena tampaknya tidak terkait dengan perutean tetapi dengan konfigurasi adal.

Memperbarui konfigurasi saya dengan titik akhir anonim, sebagiannya tidak dilindungi oleh autentikasi:

    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
 );

Saya pikir templat disimpan di templatcache Angulars melalui kunci/status yang tidak diketahui dan tidak dapat diambil jika tidak diautentikasi. Karena mereka tidak memerlukan otentikasi, saya telah menariknya keluar. Hal ini juga tampaknya telah memecahkan masalah perulangan tak terbatas saat memperbarui token yang kedaluwarsa (https://github.com/AzureAD/azure-activedirectory-library-for-js/issues/216).

Sejujurnya, saya menghadapi banyak masalah dalam mengimplementasikan adal.js. Membuat sesuatu berfungsi merupakan upaya menjelajahi stackoverflow/github dan tutorial/contoh yang aneh...

Semoga membantu, trims

person Joran    schedule 04.07.2016
comment
Halo, saya masih menghadapi masalah yang sama, rute saya tidak berfungsi setelah saya mengaktifkan init. Saya telah menambahkan titik akhir dan anonimEndpoints sebagai berikut var anonimEndpoints = [ 'requeue/app/template/' ]; var endpoints = { // Memetakan lokasi permintaan ke API ke pengidentifikasi sumber daya terkait 'contosotogo.azurewebsites .net': 'contoso.onmicrosoft.com/ToGoAPI' }; Sekarang saya mendapatkan kesalahan sebagai berikut angle.js:14700 TypeError: Cannot read property 'data' of null(…) Kemungkinan penolakan tidak tertangani: {} Bisakah Anda membantu saya dalam hal ini? - person Alok Adhao; 23.11.2017