Регистрация на потребител на Asp .net MVC3

Обучавам се на Asp .net MVC 3. Достигнах етап, в който сега трябва да включа система за потребителски акаунти. Започнах със стандартен доставчик на членство Asp .net MVC 3 и искам да се придържам към него в по-голямата си част и да съхранявам всички останали потребителски данни в друга таблица, свързана с таблицата на потребителите.

Бих искал обаче да добавя две функции по време на регистрацията: 1) Имейл за потвърждение 2) Приемане на T&C.

Има ли лесен начин да направите това, без да създавате персонализиран доставчик на членство?


person Tripping    schedule 07.07.2012    source източник


Отговори (2)


Лично аз не вярвам, че имейлите за потвърждение/правилата и условията трябва да са част от доставчик на членство.

Обикновено бихте се занимавали с подобни неща във вашия AccountController (или какъвто и да е еквивалент, който имате).

Например, ако имате действие за регистриране, след като сте използвали доставчика на членство, за да запазите потребител и всичко изглежда добре, тогава ще изпратите имейл за потвърждение (кодът се задейства от действието)

person Kenneth Ito    schedule 07.07.2012

Можете да добавите условията за приемане към класа RegisterModel в модела на акаунта (AccountModels.cs в директорията на моделите), като това:

[Display(Name = "Agree to Terms")]
public bool AgreeTandC { get; set; }

Трябва да актуализирате изгледа на регистъра, като добавите дисплея за това, така че да се показва поле за отметка и какъвто текст искате с него.

За съжаление не можете просто да използвате атрибута [Required], тъй като това е bool и това, че не се проверява, е false, а не null. Има начини за създаване на персонализиран атрибут, изискван от bool, но те са малко работа. Може да е по-лесно за вас да добавите проверка в метода за регистриране в контролера на акаунти, за да видите дали е отметната, нещо подобно:

if(model.AgreeTandC == false)
{
    ModelState.AddModelError("AgreeTandC", "You must agree to the Terms and Conditions");
    return View(model);
}

Не съм използвал ModelState.AddModelError така преди, но мисля, че ще работи (показва грешката на потребителя), в противен случай просто го заменете с ViewBag.Error = "You must agree to the Terms and Conditions"; и добавете това към модела за изглед на регистъра.

Що се отнася до имейла, не е трудно, трябва да добавите възможност за изпращане на имейл нещо като MvcMailer ще помогне с това. Трябва също така да промените реда Membership.CreateUser в метода за регистриране на контролера на акаунти, за да не упълномощавате потребителя.

Membership.CreateUser(model.UserName, model.Password, model.Email, null, null, false, null, out createStatus);

Мисля, че така трябва да бъде. Тогава, ако createStatus == MembershipCreateStatus.Success) изпратете имейла с GUID за потвърждение string confirmationGuid = user.ProviderUserKey.ToString();

Ще трябва също така да създадете метод за приемане на идентификатора за потвърждение (когато кликнат върху връзката в своя имейл.)

Просто се спрях накратко на частта за имейлите, има много блогове онлайн, които се занимават с изпращането на имейли за регистрация в пълни подробности.

person Garrett Fogerlie    schedule 07.07.2012