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

...ฉันได้รับข้อผิดพลาดต่อไปนี้:

... /" rel="nofollow">http://errors.angularjs.org/1.5.3/$compile/tpload?p0=app%2Fviews%2F_header.html&p1=undef&p2=undef ที่ 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=undef&p2=undef ที่ 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 templatecache ผ่านคีย์/สถานะที่ไม่รู้จัก และไม่สามารถเรียกคืนได้ในขณะที่ไม่ได้รับการรับรองความถูกต้อง เนื่องจากพวกเขาไม่ต้องการการตรวจสอบสิทธิ์ ฉันจึงดึงพวกเขาออก ดูเหมือนว่าจะแก้ไขปัญหาการวนซ้ำไม่สิ้นสุดในขณะที่ต่ออายุโทเค็นที่หมดอายุ (https://github.com/AzureAD/azure-activedirectory-library-for-js/issues/216)

จริงๆ แล้ว ฉันประสบปัญหามากมายในการใช้งาน adal.js การทำงานเป็นความพยายามในการค้นหา stackoverflow/github และบทช่วยสอน/ตัวอย่างแปลกๆ...

หวังว่ามันจะช่วยได้นะ ไชโย

person Joran    schedule 04.07.2016
comment
สวัสดี ฉันยังคงประสบปัญหาเดียวกัน เส้นทางของฉันไม่ทำงานหลังจากที่ฉันเปิดใช้งาน init ฉันได้เพิ่มจุดสิ้นสุดและ anonymousEndpoints ดังนี้ var anonymousEndpoints = [ 'requeue/app/template/' ]; var endpoints = { // แมปตำแหน่งของคำขอไปยัง API กับตัวระบุของทรัพยากรที่เกี่ยวข้อง 'contosotogo.azurewebsites .net': 'contoso.onmicrosoft.com/ToGoAPI' }; ขณะนี้ได้รับข้อผิดพลาดดังนี้ angular.js:14700 TypeError: ไม่สามารถอ่านคุณสมบัติ 'data' ของ null(…) อาจเป็นไปได้ว่าการปฏิเสธที่ไม่สามารถจัดการได้: {} คุณช่วยฉันในเรื่องนี้ได้ไหม - person Alok Adhao; 23.11.2017