Asp.net mvc 4 使用SimpleMembershipProvider创建用户帐户
我使用的是MVC4,我试图在用户配置文件中添加一个名为AddedById(用于内部管理)的新字段 以下是我所拥有的:Asp.net mvc 4 使用SimpleMembershipProvider创建用户帐户,asp.net-mvc-4,simplemembership,Asp.net Mvc 4,Simplemembership,我使用的是MVC4,我试图在用户配置文件中添加一个名为AddedById(用于内部管理)的新字段 以下是我所拥有的: WebSecurity.CreateUserAndAccount(model.UserName, model.Password, new { FirstName = model.FirstName, LastName = model.LastName,
WebSecurity.CreateUserAndAccount(model.UserName, model.Password, new
{
FirstName = model.FirstName,
LastName = model.LastName,
AddedDate = DateTime.UtcNow
AddedByID = // to sure how to get the id because the account has not been created yet.
});
我应该在创建帐户后更新AddById吗?因为支持团队可以为某人创建帐户 如果是这种情况,请确保
AddedByID
可为空
,然后让支持团队在创建用户之前先进行身份验证
然后,使您的注册操作
如下所示
//
// POST: /Account/Register
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult Register(RegisterModel model)
{
if (ModelState.IsValid)
{
// Attempt to register the user
using (EfDb db = new EfDb())
{
try
{
var userProfile = db.UserProfiles.Local.SingleOrDefault(u => u.UserName == User.Identity.Name)
?? db.UserProfiles.SingleOrDefault(u => u.UserName == User.Identity.Name);
WebSecurity.CreateUserAndAccount(
model.UserName,
model.Password,
new
{
FirstName = model.FirstName,
LastName = model.LastName,
AddedDate = DateTime.UtcNow,
AddedByID = userProfile.UserId
}
);
catch (MembershipCreateUserException e)
{
ModelState.AddModelError("", ErrorCodeToString(e.StatusCode));
}
}
}
// If we got this far, something failed, redisplay form
return View(model);
}
既然你已经有了Userid
和Userprofile
?@KomengeMwandila,你为什么需要它呢?因为支持团队可以为某人创建帐户。如果管理员正在创建帐户,那么该用户已登录。。。因此,您拥有该ID,可以在创建新帐户时将其包括在内。谢谢。我知道你这里有什么,但是当用户创建自己的帐户时呢?最好使用创建用户并更新AddById字段的事务处理吗?@hbrock我建议将AddedById
Null设置为可空
,这样当账户的所有者是创建账户的人时,AddedById
就是Null
,这应该足以说明是谁创建了账户。此外,还可以避免不必要的返回数据库的过程。