【发布时间】:2019-06-12 05:43:27
【问题描述】:
我的网络应用程序设置如下:
- 带有 API 的资源服务器(使用 Spring Security)
- 托管登录表单页面的授权服务器 (Spring Security OAuth)
- 一个 SPA 客户端(Angular 6 / 路由 / angular-oauth-oidc 库)
- 我正在使用隐式流
我正在尝试找出实现登录流程的最佳方式。正如我现在所拥有的,当用户尝试访问受保护的路由并且没有令牌时,他会被重定向到身份验证服务器的登录表单(通过警卫)。如果登录成功,浏览器将重定向回 Angular 应用的受保护路由。由于用户现在拥有令牌,因此守卫允许访问。
问题是我试图弄清楚我的 Angular 应用程序两次:一次是在我登录之前,一次是在我登录之后。现代浏览器会缓存实际的 SPA 资源(.js、.html、.css. 等),因此不会再对服务器造成任何影响。但是 Angular 应用程序需要很长时间才能加载,并且在这个流程中,SPA 加载了两次。
有没有办法让 Angular 应用程序只加载一次?
【问题讨论】:
-
您可以打开一个登录弹出窗口,然后让登录窗口通知所有者令牌值是什么。您将在弹出窗口中使用
window.opener。 developer.mozilla.org/en-US/docs/Web/API/Window/opener -
我的用户体验设计不允许弹出窗口;但是,对于可能能够利用它们的其他人来说,这是一个很好的建议。
标签: angular spring-security oauth-2.0 single-page-application spring-security-oauth2