一些背景:
我正在写一个小型SPA,它将使用我也写过的后端。 JS和后端API位于同一台服务器上。
即SPA将从foo.com加载,后端在foo.com/api
过去我一直使用Spring Security和简单的基于表单的登录。登录后,用户将获得会话cookie。非常标准的东西。
对于这个应用程序,我查看了OAuth2隐式流程。我的理解是用户会加载我的页面,然后从SPA我会将用户引导到授权端点,这样我的应用程序就可以获得一个令牌。用户将从授权端点重定向到登录表单。在用户使用表单进行身份验证后,他们将被重定向回授权端点以获取令牌并可能授予对JS客户端的访问权限。之后,用户将被重定向到客户端指定的URL,并将新的访问令牌作为URL片段。
我有这个工作,一切都很好。我不太了解的部分是: 当用户被重定向到登录表单并且他们进行身份验证时,会在服务器上创建一个会话,该会话必须至少持续足够长的时间才能将用户重定向到授权端点以获取令牌。那时他们已经在我的服务器上有一个经过身份验证的会话,为什么不停在那里并使用传统的cookie和基于会话的登录?