【发布时间】:2017-10-25 06:33:09
【问题描述】:
我正在使用 Angular cli 开发一个具有多个延迟加载模块的 Angular 应用程序。资源(js、css 和 html)需要由 cookie 设置的授权。如果用户在加载第一个页面时没有登录,他将被重定向到 SSO 登录页面,然后在成功授权后返回应用程序。这个流程不是我可以改变的。
我遇到的问题是,如果用户加载了一个模块,在该模块中工作了一段时间,然后让页面保持打开状态,但白天不能再使用它。如果用户第二天开始尝试加载需要另一个惰性模块的路由,则该模块将返回 401,因为他不再经过身份验证。但是,用户不会看到模块加载失败,并且感觉没有任何反应。
我正在寻找一种在无法加载延迟加载模块时获得通知的方法,以便我可以将用户重定向到登录页面。这可能吗?
【问题讨论】:
-
重定向是用Guards完成的吗?在这种情况下,我认为您可以在身份验证失败的情况下触发一些事件并在 AppComponent 中处理以显示某些内容。
-
不,当您加载 index.html 文件时,重定向是在服务器端完成的。如果我在 XHR 请求中得到 401,我会在代码中进行重定向,但不知道如何在静态资源上拦截 401
-
这方面有什么进展吗?我陷入了完全相同的情况。
-
我通过自定义错误处理程序来“解决”这个问题,该处理程序可以捕获所有错误。如果一个惰性模块加载失败,它会抛出一个异常,错误处理程序可以对其进行操作并将用户重定向到登录页面。
标签: angular angular-cli