使用最新的angular (11),最新的keycloak-angular和keycloak-js。
在页面加载时,当我初始化keycloak时,我想要获得loggedin状态。即使会话处于活动状态,我也总是得到false。
这是我的初始化器代码:
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: {
checkLoginIframe: true
},
bearerExcludedUrls: []
}).then((a) => {
console.log(a); // this returns always false
});
resolve();
} catch (error) {
reject(error);
}
});
};
}即使在以下情况下也会返回false:

发布于 2021-03-01 16:54:33
正如我在评论中所写的那样,我发现我必须拥有onLoad属性。我不想使用onLoad: 'login-required',因为大多数页面都不需要用户登录,所以我必须添加onLoad: 'check-sso'。
发布于 2021-02-27 20:31:55
我要说的是,它首先需要具有pkce流的授权代码,因为它是SPA (当然,使用的OIDC客户端必须是公共的):
initOptions: {
onLoad: 'login-required',
checkLoginIframe: false,
pkceMethod: 'S256'
},此外,async/await语法也可能是一个问题(但Angular/JS不是我喜欢的,所以我可能会错)。我会将其重写为:
keycloak.init(
...
).then(async authenticated => {
if (!authenticated) {
// unauthenticated
console.log(a)
window.location.reload()
return
} else {
// authenticated
console.log(a)
...
}发布于 2021-03-01 01:00:22
请尝试使用此初始化方法:
export function initializer(keycloak: KeycloakService): () => Promise<any> {
return (): Promise<any> => {
return new Promise(async (resolve, reject) => {
try {
await keycloak.init({
config: {
url: environment.keycloak.issuer,
realm: environment.keycloak.realm,
clientId: environment.keycloak.clientId
},
initOptions: {
onLoad: 'check-sso',
checkLoginIframe: false
},
enableBearerInterceptor: true,
bearerPrefix: 'Bearer',
bearerExcludedUrls: [
'main.js',
]
});
resolve();
} catch (error) {
reject(error);
}
}
)
.catch((e) => {
console.log('Error thrown in init ' + e);
});
};
}https://stackoverflow.com/questions/66396544
复制相似问题