在Angular 2/4/6应用程序中管理状态的最佳实践

Ash*_*mar 5 angular-ui-router angular-directive angular2-forms angular

我对angular并不陌生,但是已经为我分配了一个项目,因此我已经开始工作,但是我面临与状态管理相关的情况,因此在通过wcf Restful服务进行身份验证之后,会向用户提供令牌。所以我可以用这3种方法来处理。

  • 会话存储
  • 饼干
  • 本地存储

    上述方法的问题是-

  • 如果我使用会话状态,它将对浏览器中的新选项卡无效,因此我无法检查令牌是否存在

  • 如果我使用本地存储,那么如果用户关闭浏览器并离开他/她的系统,然后再由其他人打开他的浏览器,则将无法正常工作,那么这显然是安全威胁。

  • 如果我使用cookie,直到现在遇到一个奇怪的问题,我的子组件都可以通过使用canActivateChild函数通过authguard进行身份验证,但它一直运行良好。但是,当我将网址(以及子组件路径)粘贴到新选项卡中时,两个页面在两个选项卡中都相同,并且当我单击第二个选项卡中的“ 注销”按钮时,它并没有删除Cookie。

注意:每次我单击注销按钮时都会调用该函数,但是在第二个选项卡中不起作用,从第一个选项卡中它可以正常工作。

小智 0

最好的方法是 Ngrx ,如果你使用 Angular,以前是 Redux。现在我们有了 Ngrx,您还可以使用 Ngrx 设备工具作为 chrome 扩展来查看应用程序加载时的状态和操作..这太棒了。