为什么在受保护页面上刷新会将我重定向到 root,而不是我指定的重定向?

Why does refreshing on guarded page redirect me to root, and not my specified redirection?

我正在使用 Angular 2 框架。我已经设置了我的应用程序路由模块,以便立即将我定向到登录页面(使用路径匹配 'full' 和 redirectTo:'signOn'。我的应用程序路由模块中的所有其他路由都有 canActivate: CanActivateViaAuthGuard。这只会让用户在登录后导航到其他链接。这可以正常工作,并且一旦登录,功能就可以了。用户甚至可以退出并返回到主页。

但是,如果用户登录后刷新页面,这在技术上会将布尔值(允许他们导航)设置回 false 并尝试拉出根页面,localhost:4020,这是空的。如果用户刷新页面,我需要它像最初那样路由到 localhost:4020/signOn

有什么建议吗?

我的路径变量中的路线示例:

{ path: '', redirectTo: 'dash', pathMatch: 'full' },
{ path: 'signOn', component: SignOnComponent},
{ path: 'dash', component: 'DashComponent', canActivate: [CanActivateViaAuthGuard]},
{ path: 'admin', component: 'AdminComponent', canActivate: [CanActivateViaAuthGuard]},

根据您的描述,您说 this technically sets the boolean 显然会在用户刷新时重置。维护登录状态的推荐方法是使用 Cookie 或会话存储。例如。登录后,您可以在会话存储中添加一个密钥,如

sessionStorage.setItem('isSignedIn', 1);

并将其检索为

var state = sessionStorage.getItem('isSignedIn');