gpt4 book ai didi

asp.net-mvc-4 - 如何扩展/自定义MVC4互联网应用程序WebSecurity/SimpleMembership

转载 作者:行者123 更新时间:2023-12-02 20:09:33 24 4
gpt4 key购买 nike

我一直在尽力搜索有关如何修改/扩展/自定义 Visual Studio 2012 Express 中的 MVC4 Internet 应用程序(EF 5 Code First)中可用的默认成员资格系统的更多信息。

我想知道如何实现电子邮件验证,以便在用户注册时发送带有激活链接的电子邮件。当他们点击链接时,他们的帐户将被激活,他们可以使用用户名或电子邮件登录。

我还想知道如何通过在注册期间分配默认角色来为注册用户实现简单的角色。

类似问题: How do I manage profiles using SimpleMembership?

How do you extend the SimpleMembership authentication in ASP.NET MVC4

但我真的很想使用现有的 simplemembership 系统。

这篇文章非常接近: http://blog.longle.net/2012/09/25/seeding-users-and-roles-with-mvc4-simplemembershipprovider-simpleroleprovider-ef5-codefirst-and-custom-user-properties/

我也看过这个帖子: http://weblogs.asp.net/jgalloway/archive/2012/08/29/simplemembership-membership-providers-universal-providers-and-the-new-asp-net-4-5-web-forms-and-asp-net-mvc-4-templates.aspx

这是迄今为止我发现的最接近的: http://weblogs.asp.net/thangchung/archive/2012/11/15/customize-the-simplemembership-in-asp-net-mvc-4-0.aspx

这也很有用,但对于网页来说: http://blog.osbornm.com/archive/2010/07/21/using-simplemembership-with-asp.net-webpages.aspx

我希望找到一个更全面的演练,以正确的方式扩展它。

最佳答案

您似乎没有得到任何答案。

除非我不完全理解你想要做什么,否则不需要修改/扩展/自定义默认的 SimpleMembership 来提供电子邮件注册机制,或在注册期间分配默认角色,因为所有这些都可以完成在 AccountController 内。

作为示例,这是我正在使用的注册方法:

    [HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult Register(RegisterModel model)
{
if (ModelState.IsValid) //TODO Change this to use a worker to send emails.
{
// Check if email exists already before creating new user
using (UsersContext db = new UsersContext())
{
UserProfile email = db.UserProfiles.FirstOrDefault(u => u.Email.ToLower() == model.Email.ToLower());
UserProfile uName =
db.UserProfiles.FirstOrDefault(u => u.UserName.ToLower() == model.UserName.ToLower());

// Attempt to register the user
try
{
if (email == null && uName == null && this.IsCaptchaVerify("Captcha is not valid"))
{
bool requireEmailConfirmation = !WebMail.SmtpServer.IsEmpty();
string confirmationToken = WebSecurity.CreateUserAndAccount(model.UserName, model.Password, new
{
FirstName = model.FirstName,
LastName = model.LastName,
Email = model.Email
},
requireEmailConfirmation);
if (requireEmailConfirmation)
{
EmailViewModel eml = new EmailViewModel
{
ToEmail = model.Email,
Subject = "Confirmez votre inscription",
FirstName = model.FirstName,
LastName = model.LastName,
Body = confirmationToken
};

UserMailer.ConfirmRegistration(eml).SendAsync();

Response.Redirect("~/Account/Thanks");
}
else
{
WebSecurity.Login(model.UserName, model.Password);
Response.Redirect("~/");
}
}
else
{
if (email != null)
ModelState.AddModelError("Email", "Email address already exists. Please enter a different email address.");

if (uName != null)
ModelState.AddModelError("UserName", "User Name already exists. Please enter a different user name.");

if (!this.IsCaptchaVerify("Captcha is not valid"))
TempData["ErrorMessage"] = "Captcha is not valid";
}

}
catch (MembershipCreateUserException e)
{
ModelState.AddModelError("", ErrorCodeToString(e.StatusCode));
}
}
}

// If we got this far, something failed, redisplay form
return View(model);
}

此处没有分配默认角色,但一旦验证了 EmailConfirmation 就可以轻松添加。

由于这个问题很老,我希望它对某人有所帮助!

关于asp.net-mvc-4 - 如何扩展/自定义MVC4互联网应用程序WebSecurity/SimpleMembership,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14485146/

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