Javascript Keyclope js适配器和Angular ui路由器?
我正在开发一个CMS AngularJS单页面,使用带KeyClope的单符号。但是,使用带有KeyClope JS的angular ui路由器存在一个问题 页面加载时会创建重定向循环 因此,它是重新路由:Javascript Keyclope js适配器和Angular ui路由器?,javascript,angularjs,angular-ui-router,keycloak,Javascript,Angularjs,Angular Ui Router,Keycloak,我正在开发一个CMS AngularJS单页面,使用带KeyClope的单符号。但是,使用带有KeyClope JS的angular ui路由器存在一个问题 页面加载时会创建重定向循环 因此,它是重新路由: https://website.com/#/code=XXXXXXXXXXXXXXXXXXXXXX&state=XXXXXXXXXXXXXXX 但结果应该是: https://website.com/#code=XXXXXXXXXXXXXXXXXXXXXXX&state=X
https://website.com/#/code=XXXXXXXXXXXXXXXXXXXXXX&state=XXXXXXXXXXXXXXX
但结果应该是:
https://website.com/#code=XXXXXXXXXXXXXXXXXXXXXXX&state=XXXXXXXXXXXXXXXXXX
然后像这样:
https://website.com/#/
代码如下:
var consoleBaseUrl = window.location.href;
consoleBaseUrl = consoleBaseUrl.substring( 0, consoleBaseUrl.indexOf( "/platform" ) );
consoleBaseUrl = consoleBaseUrl + "/platform";
var auth = {};
var realm = "passqlub";
console.log( consoleBaseUrl );
/** PassQlub Angular App Initialice and dependency load. */
var app = angular.module( "PassQlub", [
'ui.router',
'ngSanitize'
] );
运行应用程序块
注销密钥斗篷功能
拦截器工厂
拦截器工厂错误
变量
auth
位于全局命名空间上。它可能与另一个库冲突吗?另外,在document ready上,还有一个重新加载文档的错误处理程序?控制台记录错误以查看导致重新加载的原因。变量auth
位于全局命名空间上。它可能与另一个库冲突吗?另外,在document ready上,还有一个重新加载文档的错误处理程序?控制台记录错误以查看导致重新加载的原因。
app
.run( [
'$rootScope',
'$state',
'$stateParams',
'$http',
'$window',
'$timeout',
function ( $rootScope, $state, $stateParams, $http, $window, $timeout ) {
}
] );
var logout = function () {
console.log( "*** PassQlub: logout..." );
auth.loggedIn = false;
auth.authz = null;
window.location = auth.logoutUrl;
};
/** Keycloak Element */
angular.element( document ).ready( function () {
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/" + realm + "/protocol/openid-connect/logout?redirect_uri=" + encodeURIComponent( "https://" + location.hostname + "/platform" );
app.factory( 'Auth', function () {
return auth;
} );
//angular.bootstrap( document, [ "PassQlub" ] );
} ).error( function () {
window.location.reload();
} );
} );
app.factory( 'authInterceptor', function ( $q, Auth ) {
return {
request: function ( config ) {
var deferred = $q.defer();
if ( Auth.authz.token ) {
Auth.authz.updateToken( 5 ).success( function () {
config.headers = config.headers || {};
config.headers.Authorization = 'Bearer ' + Auth.authz.token;
deferred.resolve( config );
} ).error( function () {
deferred.reject( 'Failed to refresh token' );
} );
}
return deferred.promise;
}
};
} );
app.factory( 'errorInterceptor', function ( $q ) {
return function ( promise ) {
return promise.then( function ( response ) {
return response;
}, function ( response ) {
if ( response.status == 401 ) {
console.log( '*** PassQlub: Session Timeout' );
logout();
} else if ( response.status == 403 ) {
alert( "PassQlub: Forbidden" );
} else if ( response.status == 404 ) {
alert( "PassQlub: Not found" );
} else if ( response.status ) {
if ( response.data && response.data.errorMessage ) {
alert( response.data.errorMessage );
} else {
alert( "PassQlub: An unexpected server error has occurred" );
}
}
return $q.reject( response );
} );
};
} );