Это - текущий рабочий процесс моего приложения для регистрации пользователя.
Действия контроллера:
public ActionResult Register()
{
return View();
}
[HttpPost]
public ActionResult Register(string name, string password, string confirmPassword)
{
TempData["registered_user"] = name;
return RedirectToRoute("RegisterSuccess");
}
public ActionResult RegisterSuccess()
{
return View();
}
Представление RegisterSuccess
<%: TempData["registered_user"] %> has been registered successfully.
Это хорошо работает кроме имени пользователя, пусто, когда пользователь обновляет страницу (ПОЛУЧИТЕ/registerSuccess).
Это - нормальное поведение в других приложениях? или я должен делать с этим что-то? :) (Это - мой любимый проект, и требования прибывают от меня :P)
обновление: На самом деле существует еще один шаг, который является одобрением требуемого администратора зарегистрированного пользователя. Так, я не могу позволить пользователю войти в систему после успешного регистра. Я в настоящее время использую основанный на cookie FormsAuthentication для отслеживания, вошел в систему пользователь.
Я предпочитаю использовать шаблон PRG вместо того, чтобы показать сообщение "молния" в отправлять форме.
это нормальное поведение. Когда пользователь "обновляет" страницу, она запрашивается напрямую, а не через вашу функцию Register, поэтому ключ registered_user к этому времени уже не существует. Когда вы делаете начальную регистрацию, вы должны использовать маркер сессии (скажем, cookie) для отслеживания успешно вошедшего пользователя.
Использование cookies - хорошее место для начала
Если вы используете HTTP аутентификацию (скажем, Basic Auth), то браузер отправляет имя пользователя и пароль (открытым текстом для basic auth) с каждым запросом, который посылает 401 Unauthorized (см. HTTP/1.0 Protocol)
Хм...
Обычно вы должны подумать о решении SSO, которое хранит аутентификацию пользователя (токен). Тогда вам просто нужно будет отображать текущего аутентифицированного пользователя (так как завершенная регистрация обычно регистрирует пользователя)
Другим решением было бы добавить пользователя в url, чтобы на странице успеха были все параметры.
/registerSuccess/<username>
(и, возможно, проверить, что вошедший пользователь только что зарегистрировался и является тем же самым)
для вашего собственного забавного проекта я бы сделал второй вариант. это просто просто.