asp.net – 如何在mvc中使用自定义成员身份添加更多自定义字段?
|
我已覆盖成员资格方法以创建自定义成员资格. 在帐户模型中,我重写了CreateUser方法: public override MembershipUser CreateUser(string username,string password,string email,string passwordQuestion,string passwordAnswer,bool isApproved,object providerUserKey,out MembershipCreateStatus status)
{
ValidatePasswordEventArgs args = new ValidatePasswordEventArgs(
username,password,true);
OnValidatingPassword(args);
if (args.Cancel)
{
status = MembershipCreateStatus.InvalidPassword;
return null;
}
if (RequiresUniqueEmail && GetUserNameByEmail(email) != "")
{
status = MembershipCreateStatus.DuplicateEmail;
return null;
}
MembershipUser u = GetUser(username,false);
if (u == null)
{
UserRepository _user = new UserRepository();
// Here I call my new method which has fields I've created in the
// User table; I'm using entity framework.
_user.CreateUser(username,email);
status = MembershipCreateStatus.Success;
return GetUser(username,false);
}
else
{
status = MembershipCreateStatus.DuplicateUserName;
}
return null;
}
public MembershipUser CreateUser(string username,string email)
{
using (CustomMembershipDB db = new CustomMembershipDB())
{
User user = new User();
user.UserName = username;
user.Email = email;
user.PasswordSalt = CreateSalt();
user.Password = CreatePasswordHash(password,user.PasswordSalt);
user.CreatedDate = DateTime.Now;
user.IsActivated = false;
user.IsLockedOut = false;
user.LastLockedOutDate = DateTime.Now;
user.LastLoginDate = DateTime.Now;
//Generate an email key
// user.NewEmailKey = GenerateKey();
db.AddToUsers(user);
db.SaveChanges();
//send mail
// SendMail(user);
return GetUser(username);
}
}
现在我需要添加更多两个字段,如名字和姓氏,但我怎样才能将它传递给上面的方法? 如果我在其中添加诸如名字和姓氏之类的参数,则覆盖方法CreateUser会给我一个错误:( 解决方法您可以保留AspNetUsers表,并创建一个新表来存储额外信息(链接到原始信息).这样您就不会破坏成员资格提供程序中的任何现有代码.最初的AspNetUsers表有: 用于存储额外数据的新表可以具有例如: 这种方法的一个优点是,您可以创建多种类型的用户,每种用户将相关信息存储在不同的表中,而常用数据仍在原始表中. 如何: >首先更新RegisterViewModel以包含所需的额外数据. [HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Register(RegisterViewModel model)
{
if (ModelState.IsValid)
{
var user = new ApplicationUser() { UserName = model.Email,Email = model.Email };
IdentityResult result = await UserManager.CreateAsync(user,model.Password);
if (result.Succeeded)
{
// Start of new code ----------------------------------------
// Get Id of newly inserted user
int userId = user.Id; // Get Id of newly inserted user
// Create a profile referencing the userId
AddUserProfile(userId,model);
// End of new code ----------------------------------------
await SignInAsync(user,isPersistent: false);
return RedirectToAction("Index","Home");
}
else
{
AddErrors(result);
}
}
return View(model);
}
>根据需要实现AddUserProfile(int userId,RegisterViewModel模型)方法.您将从模型对象中获取额外数据以及userId,并将新的配置文件对象保存在数据库中. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 如何在MVC 3中设置图表系列颜色?
- 如何在不使用MembershipProvider的情况下使用ASP.NET登录控
- asp.net – 如何在Web / Windows窗体中将IronRuby或IronPyt
- asp.net – asp:UpdateProgress – 保留换行符
- asp.net-core – 从显式类型的ASP.NET Core API控制器(不是
- .net – 具有实体框架的存储库模式
- ASP.NET FileUpload:如何在选择文件后自动回复?
- asp.net – 当使用AngularJS,WebAPI 2和Oauth 2时,如何将授
- 防止ASP.Net中的重复回发(C#)
- asp.net字符串分割函数使用方法分享
- asp.net-mvc-3 – 全球化在ASP.Net MVC 3
- asp.net-mvc – MVC授权属性HttpUnauthorizedRes
- asp.net-mvc – 使用与本地化更改冲突的自定义数
- ASP.NET MVC的排队解决方案
- Asp.Net Identity – 在运行时设置CookieDomain
- 使用ASP.NET会话状态服务器(而不是InProc)的优点
- asp.net-mvc-3 – R#6 – 在剃刀视图中建议“使用
- asp.net-mvc – 使用LINQ进行动态查询将无法正常
- 即使控件被隐藏,ASP.NET中的验证仍然会激活吗?
- 如何使用ASP.NET Identity 3.0没有Entity Framew
