【发布时间】:2019-05-09 01:05:45
【问题描述】:
首先,如果第一个用户已经在第一个选项卡中登录并且它将重定向到仪表板,当第一个用户在同一浏览器中打开第二个选项卡(粘贴登录 URL)时,它会自动重定向到仪表板而不进入登录页面。我有条件在登录页面中,未经身份验证的用户可以访问的特定路由,
login.component.ts
linkToMarket(): void {
this.sidenav.close().then(() => {
this.router.navigate([UrlConstants.Market]);
});
}
在市场页面(在第二个选项卡中),用户可以返回登录页面,但不幸的是它会通过仪表板重定向(因为第一个用户已经登录),因为我实现了这个[如果用户登录则重定向到仪表板] [ 1],如何确定第二个标签是否有不同的用户,当从市场页面返回时,它不会重定向到仪表板而是登录页面,我是否可以在路由上设置条件或使用Authguard (可以激活)?
detail.login 组件
ngOnInit(): void {
if (this.authenService.isUserAuthenticated()) {
this.router.navigate([UrlConstants.UserSetting])
}
}
market.component.ts
linkToSignIn(): void {
this.router.navigate([UrlConstants.Login], { queryParams: { returnUrl: UrlConstants.Market } });
if (this.authenService.isUserAuthenticated()) {
this.router.navigate([UrlConstants.Login])
}
}
[1]: https://stackoverflow.com/questions/44121164/angular-2-redirect-if-user-is-logged-in
【问题讨论】:
-
不同的用户?您必须维护某种前端会话、cookie、localStorage 等。如果它是不同的用户,那么显然第一个用户的会话被破坏了。你怎么知道它是不同的用户?
-
Angular 应用程序在单个用户的浏览器中运行。您是说您有多个用户使用一台计算机/浏览器吗?还是您指的是不同计算机上的不同用户?
标签: angular typescript angular6 angular-router-guards