MVC - 流程

时间:2014-02-04 07:08:07

标签: php validation model-view-controller

我的PHP应用程序中有一个要求 - 允许用户重置密码。过程如下:

  1. 用户请求密码重置;
  2. 用户输入电子邮件地址;
  3. 系统验证电子邮件地址 - 如果无效告知用户和进程结束,则会向链接中包含散列标记的输入电子邮件地址发送电子邮件;
  4. 用户点击电子邮件中的链接;
  5. 系统接收嵌入了令牌的重置请求 - 验证令牌和时间限制(60分钟);
  6. 如果重置请求有效,则显示重置密码视图,其中包含两个密码字段,否则用户告知该请求无效并且该过程退出;
  7. 假设有效请求,用户输入两次密码,然后通过比较验证。
  8. 这似乎是目前的最佳做法。

    我的问题是如何使用MVC实现这一目标。我有一个前端控制器,它从GETPOST请求中提取数据,并将数据传递给相关的视图模型并通过路由器类进行查看。

    使用这个模型,我有一个重置密码视图模型和视图,用于处理用户的电子邮件输入和使用链接令牌发送到地址的电子邮件 - 这一切都很好。

    我还有一个视图模型和视图供用户输入新密码。我在这里遇到问题。这会验证传入的令牌和时间限制 - 这是有效的。然后,如果令牌和时间限制有效,则向用户显示设置密码视图,该视图需要进行验证。我无法使用set-password view-model和view来提供解决方案,允许我提供设置密码视图并验证,向用户显示密码无效的原因(密码字段之一)是空的,或密码不匹配。)

    我希望我对自己的问题很清楚。有人可以建议我的问题的最佳实践解决方案,解决这个过程吗?我想我在这个过程的第二部分做了太多 - 分解工作并引入一个新的视图模型(用户看不见),以便在传递给set-password之前处理令牌和时间验证部分是我正在看的一个解决方案,但感觉不对。它没有我不正确的解决方案所具有的吸引力(不太好)。

1 个答案:

答案 0 :(得分:0)

@_ teresko - 谢谢。我的问题是我对MVC的理解和实现不正确。我已经进一步阅读,特别是here。你的评论迫使我重新审视我的申请流程,我发现了这个问题。瘦控制器有时不是最佳解决方案。