我一直在阅读如何设置JSON Web令牌以及我发现的所有示例都在客户端实现身份验证逻辑(例如generator-angular-fullstack)。
例如,假设一个应用程序,用户只需转到根地址即可访问个人仪表板。如果未经过身份验证,则应将用户重定向到登录页面或登录页面。遵循角度fullstack生成器的最佳实践,客户端将首先下载整个Angular应用程序,然后用于处理身份验证和路由,并在必要时重定向到登录页面。
假设大多数访问者甚至没有帐户,为什么要让他们下载所有代码只是为了最终向他们展示一个日志页面?
简单地向未经过身份验证的用户提供轻量级登录页面并将角度应用程序仅提供给已经拥有有效令牌的用户不是更好吗? 如果是这样,为什么我找不到以这种方式实施的任何例子呢?
答案 0 :(得分:0)
您正面临前端应用程序中基于令牌的身份验证的问题之一:在客户端向服务器发出初始请求时,服务器不知道登录状态。
如果您的登录表单不是Angular应用程序的一部分,那么这是基于cookie / session的身份验证的常见用例,因为cookie随初始请求一起提供。这样,服务器就知道是为角度应用程序提供服务还是重定向到登录表单。
但是,如果您的登录表单是角度应用程序的一部分,我认为在提供整个应用程序时没有任何问题。登录后(将用户名+密码发送到服务器),您将获得一个用于所有进一步请求的令牌。在传统的单页面应用程序中,这不包括任何额外的重新加载。