1

在客人结账时确认是您本人下单的正确和最安全的方法是什么?

来自 MVC Music Store App 的示例来演示我在说什么:

//    
// GET: /Checkout/Complete

public ActionResult Complete(int id)
{
    // Validate customer owns this order
    bool isValid = storeDB.Orders.Any(o => o.OrderId == id && o.Username == User.Identity.Name);

    if (isValid)
    {
        return View(id);
    }
    else
    {
        return View("Error");
    }
}

注意 bool isValid 这一行。在这里,您要进行两次检查。1. 检查订单表中是否存在订单。2. 验证客户拥有该订单。但这是针对之前已经注册过他/她自己的用户。

那么如何进行相同类型的验证但使用访客结帐(无需注册/创建帐户)?

注意:恶意用户不应该能够在 url 中输入订单 ID 来查看其他人的订单。

4

1 回答 1

0

归根结底,IsValid至少取决于唯一标识“谁”在询问的orderid其他键。

即使在“客人结帐”中,订单也会有某些东西:

  • 帐单地址/数据
  • 送货地址/数据
  • 可能是用户电子邮件地址,以便客户可以获得更新/发票副本等。
  • 在那张纸条上,一个唯一的发票号码

因此,您可以想办法确保只有“正确”的人才能使用上述一种或多种方式获取信息——也许只通过电子邮件(而不是显示)信息给请求者。

嗯..

于 2013-05-05T12:38:17.593 回答