2017-05-09 107 views
0

我一直在阅读关于如何设置JSON Web Tokens以及我发现在客户端实现身份验证逻辑的所有示例(例如generator-angular-fullstack)。使用JWT进行身份验证:服务器还是客户端?

举一个例子,设想一个应用程序,用户只需转到根地址即可访问个人仪表板。如果未通过身份验证,则应将用户重定向到登录页面或登录页面。遵循angular intestack生成器的最佳实践,客户端首先下载整个Angular应用程序,然后用它来处理身份验证和路由,必要时重定向到登录页面。

假设大多数访问者甚至没有帐户,为什么让他们下载所有的代码只是为了最终显示他们的日志页面?

简单地向非认证用户提供一个轻量级登录页面,并且只对已经拥有有效令牌的用户使用角度应用程序不是更好吗? 如果是这样,我怎么没有发现任何实现这种方式的例子?

回答

0

您正面临着前端应用程序中基于令牌的身份验证问题之一:在从客户端到服务器的初始请求中,服务器未知登录状态。

如果您的登录表单是而不是您的Angular应用程序的一部分,这是基于cookie /会话的验证的常见用例,因为cookie随初始请求一起提供。这样,服务器就知道是否提供角度应用程序或重定向到登录表单。

但是,如果您的登录表单是您的角度应用程序的一部分,我在服务整个应用程序时看不到任何问题。登录后(将用户名+密码发送到服务器)后,您会得到一个用于所有进一步请求的令牌。在传统的单页面应用程序中,这不包括任何额外的重新加载。

+0

但是JWT可以存储为一个cookie(在上面给出的示例中实现)并在第一个请求中发送出去,因此服务器应该能够判断该客户端是否已通过身份验证。事实上,我没有看到一旦您的应用程序被加载并授权后,与完全刷新不同的是什么。无需依赖Angular发送该令牌。至于实用性,假设您有大量的一次性访问者没有帐户。为这些服务提供精简的着陆页将使加载时间更快并节省带宽。还是我误解了一些东西? – Funkatic

相关问题