Вот сценарий: когда новый пользователь регистрируется на нашем веб-сайте, мы хотим отправить электронное письмо, чтобы убедиться, что пользователь владеет адресом электронной почты. В письме есть ссылка на страницу, которая будет выполнять проверку, примерно так:
http://www.mysite.com/account/verify/token
Метод проверки выглядит следующим образом:
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Verify(Nullable<Guid> id)
{
// tries to get the user based on the verification code
if (ValidId(id))
{
// if the id is correct, update user data in the model and redirect
return RedirectToAction("Index", "Dashboard");
}
else
{
// redirects the user to the verify view
return View("Verify");
}
}
Представление «Подтвердить» - это просто текстовое поле с кнопкой, поэтому пользователь может ввести проверочный код вручную (пользователь может перейти на эту страницу с сайта и может предпочесть просто скопировать и вставить код). Когда пользователь нажимает кнопку, я хочу сделать то же самое, что и мой метод GET ; так что я получил что-то вроде этого:
[AcceptVerbs(HttpVerbs.Get | HttpVerbs.Post)]
public ActionResult Verify(Nullable<Guid> id) { ... }
У меня есть пара проблем с этим кодом (который работает, но ...):
- Можно ли использовать метод GET и POST? Или есть лучший способ справиться с этим сценарием?
- Я изменяю данные в методе GET (если идентификатор правильный, я обновляю данные пользователя, чтобы отразить, что они проверены), и это большое НЕТ НЕТ ... тем не менее, я хочу, чтобы пользователь просто мог нажмите на ссылку и проверьте токен. Есть ли лучший способ добиться этого?
Спасибо