在我的角度应用程序中,我正在以这种方式初始化load keycloak:
app.module.ts:
providers: [
{
provide: APP_INITIALIZER,
useFactory: initializer,
deps: [ KeycloakService, AppService ],
multi: true
}
],在app-init.ts:
import { KeycloakService } from 'keycloak-angular';
import { AppService } from 'src/app/app.service';
import { environment } from '../environments/environment';
export function initializer(keycloak: KeycloakService, appService: AppService): () => Promise<any> {
return (): Promise<any> => {
return new Promise<void>(async (resolve, reject) => {
try {
await keycloak.init({
config: {
url: environment.keycloak.issuer,
realm: environment.keycloak.realm,
clientId: environment.keycloak.clientId
},
loadUserProfileAtStartUp: true,
initOptions: {
onLoad: 'check-sso',
checkLoginIframe: true,
pkceMethod: 'S256'
},
bearerExcludedUrls: ['/']
}).then(async a => {
appService.setLoggedIn(a); // passing authorization status: true or false to appservice for later use
});
resolve();
} catch (error) {
reject(error);
}
})
};
}Keycloak有很多功能:(https://www.keycloak.org/docs/latest/securing_apps/)。例如,如何使用此方法:createLogoutUrl(选项)。
当我尝试执行keycloak.createLogoutUrl()时,它说keycloak (即KeycloakService )没有这个功能。
如何从我的keycloak实例中访问这个额外的功能?
发布于 2021-03-01 08:49:54
我找到了解决办法。keycloka有一个方法getKeycloakInstance().,,在文档中没有提到,但是我找到了一些例子。
let keycloakInstance = keycloak.getKeycloakInstance();现在,我的属性keycloakInstance可以访问所有keycloak属性和方法。
https://stackoverflow.com/questions/66408678
复制相似问题