在客人结账时确认是您本人下单的正确和最安全的方法是什么?
来自 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 来查看其他人的订单。