2015-05-26 6 views
0

У меня есть угловое приложение js, которое использует ngRoute. Перенаправление приложения происходит с родительского веб-сайта, а родительский веб-сайт автоматически добавляет некоторые параметры запроса в URL-адрес. Это вызывает бесконечный цикл углового приложения js.Угловая загрузка страницы JS вызывает бесконечный цикл загрузки страницы

URL-адрес, который подготовлен родительский сайт, как

http://website.com/angularapp/?redirect=bla&code=anotherbla 

Угловая JS принимает этот URL и изменяет его, как показано ниже, по крайней мере, вот что я видел.

http://website.com/angularapp/?redirect=bla&code=anotherbla#/home 

А затем страница продолжает перенаправляться на ту же ссылку. Я думаю, причина в том, что ngRoute, потому что когда я создал пример приложения без ngRoute, он работал отлично.

Вот мой main.js

var module = angular.module('product', []);  
angular.element(document).ready(function($http) { 
// There are bootstrapping functions which checks for SSO in keycloak here 
}); 

Мои ngRoute как ниже

module.config(function($routeProvider) { 
    $routeProvider.when('/home', { 
templateUrl : 'pages/panels.html', 
     controller : 'PanelCtrl', 
     reloadOnSearch: false 
    }).otherwise({ 
    redirectTo : '/home' 
}); 

Я думаю, что проблема из-за otherwise в ngRoute, сохраняющих на переадресацию на тот же место.

Чтобы это исправить

  1. Я попытался добавления reloadOnSearch: ложна в конфигурации маршрута
  2. $ route.reload как только самонастройки делается
  3. $ location.path ('/ Home'), чтобы изменить путь к URL
  4. document.location.href изменить путь к URL, то JS путь

Но ни один из них не решает проблему.

Как остановить эту перезагрузку? Могу ли я добавить фильтр, который удалит любые параметры запроса из URL-адреса, когда внутри углового приложения? Если да, можете ли вы посоветовать мне, как это сделать?

Благодаря

ответ

1

Вы можете самонастройки приложение только после того, как Keycloak инициализирована. Вы можете использовать их "AngularJS" пример в качестве основы, но, в основном, используют это:

var auth = {}; 
angular.element(document).ready(function ($http) { 
    var keycloakAuth = new Keycloak('keycloak.json'); 
    auth.loggedIn = false; 

    keycloakAuth.init({ onLoad: 'login-required' }).success(function() { 
    auth.loggedIn = true; 
    auth.authz = keycloakAuth; 
    auth.logoutUrl = keycloakAuth.authServerUrl + "/realms/demo/tokens/logout?redirect_uri=/angular-product/index.html"; 
    module.factory('Auth', function() { 
     return auth; 
    }); 
    angular.bootstrap(document, ["product"]); 
    }).error(function() { 
    window.location.reload(); 
    }); 

}); 

https://github.com/keycloak/keycloak/blob/master/examples/demo-template/angular-product-app/src/main/webapp/js/app.js#L23

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

  • Нет связанных вопросов^_^