Обмен данными между Действиями и поведением приложения

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

  1. зарегистрируйтесь форма (ПОЛУЧИТЕ регистр/),
  2. отправьте форму (POST / регистр)
  3. после успеха, маршрута перенаправления к "/registerSuccess"
  4. в (ПОЛУЧАЮТ/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

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

Это хорошо работает кроме имени пользователя, пусто, когда пользователь обновляет страницу (ПОЛУЧИТЕ/registerSuccess).

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

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

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

1
задан Soe Moe 23 July 2010 в 03:14
поделиться

2 ответа

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

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

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

1
ответ дан 2 September 2019 в 22:50
поделиться

Хм...

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

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

/registerSuccess/<username>

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

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

1
ответ дан 2 September 2019 в 22:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: