我有一个授权服务器,目前我的angular2应用程序和mvc webapp都已使用。
我已经使用oidc-client javascript包在angular2 app中实现了授权。除了注销功能外,一切正常。
public logoff(): void {
this.customAuthService.startSignoutMainWindow();
}
startSignoutMainWindow() {
this.manager.getUser().then(user => {
return this.manager.signoutRedirect({ id_token_hint: user.id_token }).then(resp => {
console.log('signed out', resp);
setTimeout(5000, () => {
console.log('testing to see if fired...');
});
}).catch(function (err) {
console.log(err);
});
});
};
这是我用来注销使用oidc-client实现授权的angular2应用程序的代码。
但这并没有退出我的其他asp.net web mvc应用程序。
但反过来工作正常,即如果我退出我的mvc Web应用程序,我的角度应用程序会重定向到授权服务器进行登录。
任何人都可以帮忙解决这个问题,这样如果我退出我的angular2应用程序,我应该可以使用mvc应用程序而无需再次登录。
提前致谢。
答案 0 :(得分:0)
发起退出:
let userManager = new Oidc.UserManager(oidcSettings);
public startLogout(): Promise<any>
{
return this.userManager.signoutRedirect();
}
完成注销
public completeLogout(url?: string): Promise<any>{
return this.userManager.signoutRedirectCallback(url)
.then((user: OidcClientUser) =>
{
// This will clear the OpenID access tokens that is stored in the session
return this.userManager.clearStaleState();
});
}
在logoutComplete上,您需要从浏览器清除session和clientDeeplinks 像这样的东西:
public clear(ClientDeepLink?: string): void
{
if ((key) && (key.trim().length > 0))
{
this.$window.localStorage.removeItem(key);
}
else
{
this.$window.localStorage.clear();
}
}