Asp .net MVC3用户注册

时间:2012-07-07 08:40:35

标签: asp.net-mvc-3 membership-provider custom-membershipprovider

我正在教自己Asp .net MVC 3.我已经到了一个我现在需要合并用户帐户系统的阶段。我从标准的Asp .net MVC 3会员提供商开始,并希望在大多数情况下坚持使用它,并将所有其他用户详细信息存储在链接到用户表的另一个表中。

但是,我想在注册时添加两个功能: 1)确认电子邮件 2)接受T& C.

如果不构建自定义成员资格提供程序,是否有一种简单的方法可以做到这一点?

2 个答案:

答案 0 :(得分:3)

就个人而言,我不相信确认电子邮件/条款和条件应该是会员提供者的一部分。

你通常会在你的AccountController中处理类似的东西(或者你拥有的任何东西)。

例如,如果您有注册操作,一旦您使用成员资格提供程序保存用户并且一切看起来都不错,您就会发出确认电子邮件(代码从操作中触发)

答案 1 :(得分:1)

您可以在帐户模型(Models目录中的AccountModels.cs)中将接受条款和条件添加到RegisterModel类,如下所示:

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

您必须更新“注册”视图,为此添加显示,以便显示复选框以及您想要的任何文本。

不幸的是,您不能简单地使用[Required]属性,因为这是bool而未被检查的是false而不是null。有一些方法可以创建自定义bool必需属性,但它们有点工作。您可以更容易地在帐户控制器中的Register方法中添加一个检查以查看是否已选中它,如下所示:

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将有助于此。您还需要更改帐户控制器的Register方法中的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();

的电子邮件

您还必须制作一种方法来接受确认ID(当他们点击电子邮件中的链接时。)

我只是简单地谈到了电子邮件部分,网上有很多博客都会详细发送注册电子邮件。