0

让我们有一些简单的页面,允许登录用户编辑文章。想象以下情况:

用户 Bob 已登录系统并正在编辑长文章。由于编辑此类文章需要很长时间,因此他的身份验证已过期。之后,他点击提交按钮,由于验证过期,他被重定向到登录页面。

在他成功登录后完成操作(保存文章)是非常可取的。因此,我们将恢复在 Bob 未经身份验证时完成的请求,并在成功登录后现在重复它。金字塔怎么能做到这一点?

4

1 回答 1

3

您需要三个部分;

  1. 处理经过身份验证的表单提交的页面应检查请求是否经过正确身份验证,执行操作,但如果不是,则将所有数据存储在服务器端会话中并将使用重定向到登录页面。
  2. 登录页面应查找“正在尝试执行 X”类型的查询参数(例如,...?fromurl=/post/a/comment. 用户成功登录后,登录页面应将用户重定向到该页面而不是站点的首页。
  3. 用户被重定向到的 url应该与他们最初填写未经身份验证的请求时使用的表单相同。但是,在这种情况下,服务器应该认识到该用户的服务器端会话中存储了字段值;因此它应该使用这些值填充所有表单字段。然后用户可以立即点击提交并完成帖子。这可以以类似的方式工作,即当请求包含一些无效的表单值时重新填充字段。

重要的是,第 3 步不应直接执行帖子;原始数据和请求来自未经身份验证的用户。

于 2012-08-30T12:30:42.347 回答