【问题标题】:Why does refreshing on guarded page redirect me to root, and not my specified redirection?为什么在受保护页面上刷新会将我重定向到 root,而不是我指定的重定向?
【发布时间】:2018-01-30 03:19:57
【问题描述】:

我正在使用 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]},

【问题讨论】:

    标签: javascript html angular angular-ui-router angular-router-guards


    【解决方案1】:

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

    sessionStorage.setItem('isSignedIn', 1);
    

    并将其检索为

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

    【讨论】:

    • 我以前从未使用过会话存储。我需要导入/设置什么才能使用它?
    • 什么都没有。您无需导入或设置任何内容。它是一个全局变量。 PS。你也可以使用 localStorage
    猜你喜欢
    • 1970-01-01
    • 2012-07-07
    • 2020-01-09
    • 2018-11-18
    • 2023-03-11
    • 2023-03-25
    • 1970-01-01
    • 2022-01-14
    • 1970-01-01
    相关资源
    最近更新 更多