我的Aurelia项目分为两个应用程序根,两者都有自己的路由结构。 应用程序根1包含所有不需要进行身份验证的屏幕(登录,重置密码,...)应用程序根2所有其他屏幕。
当您未使用authorizeStep进行身份验证时,我阻止访问应用根2上的路由。在此步骤中,我在未经过身份验证时将根目录设置为app root 1。应用程序根1具有登录视图作为默认路由,因此这非常有效。因此,当您未经过身份验证并尝试导航到应用根2中的深层网址时,会发生这种情况:
问题是手动注销。当单击位于应用程序根目录2中的此按钮时。我清除用户数据,因此您不再进行身份验证。在该步骤之后,我手动将根设置为app root 1,然后我得到一个无限循环:
问题是在root 1中导航时,来自root 2的authorizeStep会触发。我找了一种删除authorizestep的方法,但我不认为框架当前暴露了这个。我发现很奇怪这个问题只发生在点击注销,深层链接和重定向到登录按预期工作时。
为了清晰起见,我创建了一个可重现的要点,单击注销按钮,您将看到控制台无限重复授权步骤。
答案 0 :(得分:0)
事实证明你需要自己清除这些步骤,这不是在aurelia.setRoot()内部调用的router.clear()中完成的。
幸运的是,您实际上可以自己做到这一点:
this.pipelineProvider.reset();
我发现这种行为不合乎逻辑,所以我为它创建了一个问题:https://github.com/aurelia/router/issues/465