为什么刷新Facebook之类的页面时看不到任何加载程序?

时间:2019-01-05 10:56:46

标签: session authentication web token protected

我想问你,Facebook等网站如何处理页面刷新时的用户身份验证?我想知道为什么在刷新页面并且处于受保护的路由(例如我的个人资料设置)时没有看到任何加载程序。

创建应用程序时,我使用以下身份验证流程:

  1. 加载应用程序
  2. 向用户显示身份验证过程加载器。
  3. 从cookie中获取用户会话令牌。
  4. 将带有令牌的身份验证请求发送到后端。
  5. 在后端验证令牌。
  6. 如果令牌有效,则以状态代码200发送给客户端,如果令牌无效,则以状态代码401发送给客户端。
  7. 在客户端接收响应并隐藏加载程序。
  8. 如果用户已通过身份验证,则显示受保护的路由;如果用户未通过身份验证,则重定向至登录页面。

因此,使用这样的流程,初始加载程序是必要的,facebook如何能够忽略它?

2 个答案:

答案 0 :(得分:0)

欢迎使用Stack Overflow。

我不确定您的问题是否有效-Facebook上几乎每个页面都要求您进行身份验证(而不仅仅是个人资料页面),并且经过身份验证的访问权限是几乎每个主要网站的常见功能;他们很少显示加载栏。

我们不确切知道Facebook是如何构建的,但是可以肯定的是他们使用React。您可以阅读有关如何在React here上管理身份验证的内容。

您的流程基于以下假设:要加载“应用程序”,并且身份验证请求将花费大量时间。如果令牌验证很快,则此假设可能是错误的。您确实在React应用程序上看到了“正在加载”动画-如果您在FB上快速滚动时间轴,就会看到圆圈。这可能部分是网络,部分是检索帖子。

答案 1 :(得分:0)

我知道了。这是可能的,因为可以使用Cookie在服务器端进行身份验证。他们会在用户进入页面时验证用户令牌,然后在此之后呈现所需的页面版本(对于经过身份验证的用户而言是不同的,对于未经身份验证的用户而言则不同)。