ゲストのチェックアウト時に注文したのが本当にあなた自身であることを確認するための適切かつ最も安全な方法は何ですか?
私が話していることを示すための MVC Music Store アプリの例:
//
// 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 という行に注目してください。ここでは、2 つのチェックを行っています。1. Orders テーブルに注文が存在するかどうかを確認します。2. 顧客が注文を所有していることを確認します。ただし、これは以前に自分自身を登録したユーザー向けです。
では、ゲストチェックアウトを使用して同じタイプの検証を行うには (アカウントを登録/作成する必要はありません)?
注: 悪意のあるユーザーが URL に注文 ID を入力して、他のユーザーの注文を表示できないようにする必要があります。