我的Web应用程序设置如下:
我正在尝试找出实现登录流程的最佳方法。就像我现在拥有的那样,当用户尝试访问受保护的路由并且没有令牌时,他将被重定向到身份验证服务器的登录表单(通过警卫)。如果登录成功,浏览器然后将重定向回角度应用程序的受保护路由。由于用户现在拥有令牌,因此防护程序允许访问。
问题是我想弄清楚我的角度应用程序是两次:一次是在我登录之前,另一次是在登录之后。现代的浏览器会缓存实际的SPA资源(.js,.html,.css等),因此不会对服务器造成任何影响。但是Angular应用程序的加载时间很短,在此流程中,SPA加载了两次。
有没有一种方法可以使Angular应用程序仅加载一次?
答案 0 :(得分:1)
您可以使用cgTag所建议的弹出窗口,但是在小型设备上弹出是有问题的,根据我的经验,即使在台式计算机上,人们通常也不喜欢弹出窗口。您不能使用iframe
,因为用户应该看到auth服务器的URL和证书。
我认为解决问题的最佳方法是优化SPA以更快地加载。无论如何,您都需要它来加载第一页。有几种加快加载速度的方法-提前(AOT)编译,摇树,延迟加载,服务器端预渲染等。如果您使用Angular CLI,它已经内置了对其中某些功能的支持,因此很容易尝试查看它们是否带来了一些改进。
答案 1 :(得分:0)
您可以共享在app-component和app-guard.ts中完成的路由器出口代码吗? 因此,在完成登录身份验证的硬刷新之前,Angular永远不会两次访问服务器。因此,请重新检查您的代码,以确保您登录后尚未完成网址的刷新