[英]What is happening when ASP.NET MVC 3 Accounts Scaffolding calls Membership.Createuser?
我是一个asp mvc 3 noob,试图修改用户帐户支架以保存更多信息。 用户创建帐户时,我想添加其他信息,例如其全名和开始日期,而不仅仅是他们的用户名/密码。 我将这个添加的信息存储在数据库的Employees表中。
我看到在AccountController中的代码行,该代码行是在用户输入表单输入后创建帐户的。
Membership.CreateUser(model.UserName, model.Password, model.Email, Nothing, Nothing, True, Nothing, createStatus)
似乎此行调用了SQL Server中的存储过程。 似乎最可能的存储过程是aspnet_Membership_CreateUser。 但是此存储的proc具有13个参数,并且上面的代码传递了8个参数。
我无法回答您的其他问题,但这是我使用的代码来扩展用户注册以包含更多日期(使用配置文件表,而不是配置文件提供程序):
'
' POST: /Account/Register
<HttpPost()> _
Public Function Register(ByVal model As RegisterModel) As ActionResult
If ModelState.IsValid Then
' Attempt to register the user
Dim createStatus As MembershipCreateStatus
Dim MembershipUser = Membership.CreateUser(model.UserName, model.Password, model.Email, Nothing, Nothing, True, Nothing, createStatus)
If createStatus = MembershipCreateStatus.Success Then
Dim providerKeyObject = MembershipUser.ProviderUserKey
Dim providerKeyGuid = MembershipUser.ProviderUserKey
' update profile entity
Dim db As UserProfileDbContext = New UserProfileDbContext
Dim profile As New UserProfile
profile.UserId = providerKeyGuid
profile.IsCompanyOwner = True
profile.CompanyId = model.Company
profile.BlogId = model.Blog
profile.IsCompanyOwner = model.IsCompanyOwner
profile.IsBlogOwner = model.IsBlogOwner
db.UserProfiles.Add(profile)
db.SaveChanges()
FormsAuthentication.SetAuthCookie(model.UserName, False)
' send email
' TODO: fix error on send
Call New EmailController().VerificationEmail(model).Deliver()
Return RedirectToAction("Index", "Home")
Else
ModelState.AddModelError("", ErrorCodeToString(createStatus))
End If
End If
' If we got this far, something failed, redisplay form
Return View(model)
End Function
该代码将运行aspnet_Membership_CreateUser
存储过程
Membership.CreateUser
已重载,并将放置未提供的参数的默认值。 例如,如果仅使用用户名和密码来调用CreateUser,则所有其他参数将被默认设置,例如IsApproved将为true。 >>输入CreateUser时,您应该看到重载选项。 您可以使用Just Decompile之类的工具查看“ C:\\ Windows \\ Microsoft.NET \\ Framework \\ v4.0.30319 \\ system.web.dll”中的代码
有多种存储其他数据的方式。 看这一个 。 我更喜欢按UserId /电子邮件地址链接表,并在创建用户时调用CreateUser,如果成功,则保存其他数据(这与该教程中介绍的方法略有不同)。 您还可以修改/扩展整个成员资格提供者,请参阅此链接(实现成员资格提供者)或此视频教程
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.