注销无法正常工作- angular-oauth-oidc

hpxqektj  于 2023-10-15  发布在  Angular
关注(0)|答案(1)|浏览(120)

我正在使用angular-oauth-oidc库来管理angular应用程序中的身份验证。我也使用这个示例作为我工作的基础:https://github.com/jeroenheijmans/sample-angular-oauth2-oidc-with-auth-guards
当我启动项目并尝试导航到受保护的页面A时(由一个检查我是否经过身份验证的守卫保护,如果我没有,它会调用initLoginFlow()方法),我被重定向到授权服务器的登录页面,成功登录后,我被重定向到页面A。
当我点击一个按钮注销时,我被重定向到我在库的logoutUrl属性中指定的页面B,所有数据和令牌都从localStorage中删除。到目前为止,它工作得很好。
但是,当我试图再次导航到受保护的页面A时,发生了一些重定向,我发现自己已经登录并已经在页面A上,并且令牌再次在localStorage中可用,而不必转到服务器的登录页面并执行我第一次所做的操作。为什么我没有再次重定向到服务器的登录页面?

// the guard
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {
            return this.authService.isDoneLoading$.pipe(
                filter(isDone => isDone),
                switchMap(_ => this.authService.isAuthenticated$),
                tap(isAuthenticated => {
                    return isAuthenticated || this.authService.login(state.url);
                }),
            );
        }

// auth service login
public login(targetUrl?: string) {
        this.oauthService.initLoginFlow(targetUrl || this.router.url);
        // this.oauthService.initCodeFlow(targetUrl || this.router.url); // i tried this one and same result
    }

// logout method
public logout() {
        this.oauthService.logOut();
        // this.oauthService.revokeTokenAndLogout(); // i tried this one and same result
    }

有人能帮我解决这个问题吗?谢谢.

u0sqgete

u0sqgete1#

我发现显式添加logoutUrl属性解决了这个问题。我不明白为什么,但它工作。我被重定向到服务器的注销页面,会话结束。

相关问题