Обмен данными между действиями и поведением приложения - PullRequest
1 голос
/ 22 июля 2010

Это текущий рабочий процесс моего приложения для регистрации пользователей.

  1. регистрационная форма (GET / регистрация)
  2. отправить форму (POST / регистрация)
  3. после успеха перенаправить маршрут на "/ registerSuccess"
  4. В представлении (GET / registerSuccess) я хочу показать сообщение типа « имя пользователя успешно зарегистрировано».

Действия контроллера:

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 View

<h2><%: TempData["registered_user"] %> has been registered successfully.</h2>

Работает нормально, кроме имя пользователя пусто, когда пользователь обновляет страницу (GET /registerSuccess).

Это нормальное поведение в других приложениях? или мне что то с этим делать? :) ( Это мой любимый проект и от меня исходят требования: P )

обновление: На самом деле, есть еще один шаг, который зарегистрированный пользователь требует одобрения администратора. Поэтому я не могу позволить пользователю войти в систему после успешной регистрации. В настоящее время я использую основанную на cookie FormsAuthentication для отслеживания вошедшего в систему пользователя.

Я предпочитаю использовать шаблон PRG вместо отображения флеш-сообщения в форме отправки.

Ответы [ 2 ]

1 голос
/ 22 июля 2010

это нормальное поведение. Когда пользователь «обновляет» страницу, запрашивается напрямую, а не через вашу функцию «Регистрация», поэтому ключ register_user к тому времени исчезает.Когда вы делаете первоначальную регистрацию, вы должны использовать маркер сеанса (например, cookie) для отслеживания успешно вошедшего в систему пользователя.

Использование учебника cookie - хорошее место для начала

Если вы должны использовать HTTP-аутентификацию (скажем, Basic Auth), то браузер отправляет имя пользователя и пароль (в виде обычного текста для базовой аутентификации) с каждым запросом, который отправляет 401 Unauthorized (см. HTTP / 1.0 Protocol * 1008).*)

1 голос
/ 22 июля 2010

Хмм ...

Обычно вы должны подумать о решении SSO, которое содержит аутентификацию вашего пользователя (токен).тогда вам просто нужно будет отобразить текущего аутентифицированного пользователя (поскольку завершенная регистрация обычно регистрирует пользователя)

другое решение - добавить пользователя в URL, чтобы страница успеха имела все параметры.

/registerSuccess/<username>

(и, возможно, проверьте, что зарегистрированный пользователь только что зарегистрирован, и то же самое)

для вашего собственного веселого проекта, я бы сделал второй.это просто очень просто.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...