angular - Oidc-client 与 IdentityServer3 - Angular2,如何正确注销和登录

标签 angular openid identityserver3 oidc-client-js

这是一些背景知识,我正在使用隐式流,我的 token 是 JWT。要注销,我使用方法调用signoutRedirectCallback。

我希望能够正确注销。这样我就可以以不同的用户身份登录。这样做时,我仍然拥有上一个用户的 token 吗?有没有办法完全注销用户,使其不具有最后一个用户的 token ?由于某种原因, token 仍然存在。看来真正注销的唯一方法是当浏览器页面关闭并且identityserver3上的cookie被删除/删除时?

这也可以回答我的另一个问题。如果用户单击主网格页面上的超链接并打开一个新选项卡(例如详细信息页面),如果用户在新选项卡(详细信息页面)上注销,则仍会记录主网格页面(旧选项卡)在?同样,这也是我没有完全注销的问题。

任何人都可以给我一些关于如何正确注销以删除 Identityserver3 上的 Cookie 的指导吗?所以这是一个干净的石板。 token 仍然存在。谢谢。

//Here is the code. In my main component I have a menuclick event and this works: 
public MenuClick(event, item)
{
    if (item === "signOut") 
    {
        this.signOut();
    }
}

public signOut() 
{
    this._LoginService.logOut();
}

//Here is the LoginService that calls the oidc-client method:
public logOutCall(): Observable<boolean> 
{
    return Observable.fromPromise(new Promise<boolean> (
        resolve => 
        {
            this._oidcService.logOut();
            resolve(true);
        }
    ));
}

this._oidcService.logOut() 调用实际的oidc-client 方法signoutRedirectCallback()。这有效并且可以重定向。但除非我关闭页面,否则 token 仍然存在。

更新:我的测试团队告诉我,此问题专门针对 Chrome。

最佳答案

要清除 UserManager 管理的状态,请调用 removeUser。当您触发注销时,应该调用此方法,所以我很好奇为什么不这样做。检查日志?

关于angular - Oidc-client 与 IdentityServer3 - Angular2,如何正确注销和登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41449064/

相关文章:

Azure Active Directory Graph API - 登录用户的访问 token

ios - 如何使用授权码流程为 IOS 客户端设置 Identity Server 3

entity-framework - IdentityServer 3 + Asp.net Identity : Scopes, 声明和客户端 - 澄清

javascript - 带参数的自定义验证

angular - 在卡片图像上显示 Firebase 中保存的图像 URL?

oauth-2.0 - 使用 Keycloak 刷新 token

asp.net-mvc - StackExchange 站点如何关联用户帐户和 OpenID 登录?

identityserver3 - IdentityServer4 中的 UI 发生了什么变化?

angular - 禁用引导模态区域外的点击事件以关闭 Angular 4 中的模态

javascript - 显示名称而不是值