如何解决Okta 注销在 Angular Applicaiton 中不起作用
我将 OKTA SDK 用于 enter link description here 之后的角度
本文档。我还使用 OktaCallbackComponent 和 OktaAuthService 进行身份验证。 我可以成功登录。成功登录后,OKTA 将我重定向到 OktaCallbackComponent,他们将一些密钥存储在 localstroge 中,最后,我导航到我的主页。
现在当我点击应用程序的注销按钮时,它不起作用。正如我所见,页面加载并立即导航到回调组件并再次导航到主页。而我希望登录页面应该出现在用户面前。
这是我的注销功能。
async logout(){
this.oktaAuth.tokenManager.clear()
await this.oktaAuth.signOut();
this.router.navigate(['/login']);
this.toastr.success('logout Successfully','See you next time',{timeOut: 5000});
}
谁能帮我解决可能的问题。
{
path: 'main',component: OpDataTableComponent,canActivate: [ OktaAuthGuard ],data: {
title: 'Main Page'
}
},{
path: CALLBACK_PATH,component: OktaCallbackComponent,// Later: Add a component
},{
path: 'login',// component: LoginComponent,component:OktaLoginComponent,canActivate: [checkAfterLoginService],data: {
title: 'Login Page'
}
}
CheckAfterLoginService
export class checkAfterLoginService {
constructor(private oktaAuth: OktaAuthService,private tokenService: TokenService,private router: Router) { }
canActivate(route: ActivatedRouteSnapshot,state: RouterStateSnapshot): boolean | Observable<boolean> | Promise<boolean> {
if(this.oktaAuth.isAuthenticated())
{
return this.router.navigateByUrl('/main');
}else
{
return false;
}
}
}
Okta 配置。
const ISSUER = 'https://...../oauth2/default';
const HOST = window.location.host;
const REDIRECT_URI = 'https://..../callback';
const ScopES = 'openid profile email';
const config = {
issuer: ISSUER,clientId: '.....',redirectUri: REDIRECT_URI,scopes: ScopES.split(/\s+/)
};
P.s 添加到应用程序设置的注销 URL 是 https://../login 路由。 我该如何解决这个问题或者可能是什么问题?非常感谢您的帮助。
解决方法
尝试将您的 logout()
方法更改为如下所示:
async logout(){
await this.oktaAuth.signOut();
this.router.navigate(['/login']);
this.toastr.success('Logout Successfully','See you next time',{timeOut: 5000});
}
您当前正在手动清除令牌,这使我们的底层 Auth JS SDK 认为您已注销。 this.oktaAuth.signOut()
应该为您清理令牌。如果您仍想手动清除它们,请确保在 signOut()
之后进行。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。