gpt4 book ai didi

asp.net-mvc - ASP.NET MVC 4、Internet 应用程序模板、SimpleMembership - 帐户模型 - 强制执行唯一的用户名和电子邮件

转载 作者:行者123 更新时间:2023-12-04 05:03:03 25 4
gpt4 key购买 nike

如果您在 Visual Studio 2012 Express 中创建一个新的 ASP.net MVC 4 应用程序 - 并选择 Internet 应用程序模板 - 它会为您创建一个帐户模型来管理用户。

开箱即用,这使用户可以使用唯一的用户名和密码进行注册和登录。

您还可以将用户名更改为其他内容 - 例如电子邮件地址。

但是,要求用户输入唯一的用户名和电子邮件是很常见的。

如何更改开箱即用的功能来检查这一点?除了服务器端,客户端检查更可取。

我使用的是 Code First - 所以不想手动更改数据库和 SQL Server 2012 Express。

谢谢。

最佳答案

如果您使用的是开箱即​​用的模板,则不必担心 Username , WebSecurity将照顾确保其独特性。至于Email ,这就是我在我目前正在处理的 Web 应用程序中所做的。

    [HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult Register(RegisterModel model)
{
if (ModelState.IsValid)
{
// Attempt to register the user
using (EfDb db = new EfDb())
{
UserProfile userEmail = db.UserProfiles.FirstOrDefault(u => u.Email.ToLower() == model.Email.ToLower());
try
{
// Check if email already exists
if (userEmail == null)
{
var token = WebSecurity.CreateUserAndAccount(
model.UserName,
model.Password,
new
{
model.Email
},
true);
}
ModelState.AddModelError("", ErrorCodeToString(MembershipCreateStatus.DuplicateEmail));
}
catch (MembershipCreateUserException e)
{
ModelState.AddModelError("", ErrorCodeToString(e.StatusCode));
}
}
}
// If we got this far, something failed, redisplay form
return View(model);
}

如您所见,数据库与此处的验证无关。 C# 代码负责处理它。只要确保在你的 ViewModel 中有这个:
    [EmailAddress]
[Required]
[Display(Name = "Email")]
public string Email { get; set; }

在 View 中
    <div class="editor-label">
@Html.LabelFor(model => model.UserName)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.UserName)
@Html.ValidationMessageFor(model => model.UserName)
</div>

<div class="editor-label">
@Html.LabelFor(model => model.Email)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Email)
@Html.ValidationMessageFor(model => model.Email)
</div>

关于asp.net-mvc - ASP.NET MVC 4、Internet 应用程序模板、SimpleMembership - 帐户模型 - 强制执行唯一的用户名和电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15870211/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com