[英]Angular JS page load triggers infinite page load loop
我有一个使用ngRoute的有角度的js应用程序。 到应用程序的重定向来自父网站,并且父网站会自动将一些查询参数附加到URL中。 这将触发angular js应用程序的无限循环。
父网站准备的网址如下
http://website.com/angularapp/?redirect=bla&code=anotherbla
Angular 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'
});
我认为问题是由于ngRoute中的otherwise
情况所致,它们会继续重新路由到同一位置。
要解决这个问题
- 我尝试添加reloadOnSearch:路由配置中的false
- 引导完成后立即运行$ route.reload
- $ location.path('/ home')更改URL的路径
- document.location.href更改url的路径,即JS方式
但是他们都没有解决这个问题。
如何停止此重新加载问题? 我可以添加一个过滤器,以便在角度应用程序内部时从网址中删除所有类型的查询参数吗? 如果是,您可以指导我如何做吗?
谢谢
您可能只想在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();
});
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.