asp.net – Simplemembership – 添加电子邮件字段并用作登录名
我想在这里做两件事:
1.将电子邮件字段添加到(默认)UserProfile表. 2.更改登录以使用电子邮件而不是用户名,这也像魅力一样. 这是问题所在.以上只有在我单独使用时才有效,只要我使用它们两者,注册过程就会失败,并显示以下错误消息: Cannot insert the value NULL into column 'UserName',table 'opdb.dbo.UserProfile'; column does not allow nulls. INSERT fails. WebSecurity.CreateUserAndAccount(model.UserName,model.Password,new { Email = model.Email }); WebSecurity.Login(model.Email,model.Password); 我或多或少跟随着 奇怪的是,只要我不同时使用它们,一切都会有效.有任何想法吗?这让我抓狂! 提前致谢 编辑:它可能是数据库中列的顺序吗?用于识别的字段需要是表格中的第一列吗?那么,如果我想要电子邮件作为身份,需要成为表格中的第一列? 解决方法
它不是列顺序.我认为您尚未正确设置WebSecurity.InitializeDatabaseConnection.这听起来像是在添加电子邮件字段时,它被视为电子邮件字段(而不是用户的自然键),当您更改登录以使用电子邮件时,您实际上是将电子邮件插入UserName列?
无论哪种方式,工作都很简单.假设您已在数据库中拥有电子邮件列,并且您使用的是标准Internet应用程序模板,请执行以下操作: >更改您的UserProfile模型以添加Email属性,对RegisterModel执行相同操作并将Login Model从UserName更改为Email 所以,实际的变化是: > Models / AccountModels.cs更改 > class UserProfile:添加属性public string Email {get;组; } > AccountController更改 >登录方式: >将model.UserName更改为行中的model.Email if(ModelState.IsValid&& WebSecurity.Login(model.UserName … >注册方法: >更改WebSecurity.CreateUserAndAccount(model.UserName,model.Password);到WebSecurity.CreateUserAndAccount(model.Email,new {UserName = model.UserName}); >过滤器/ InitializeSimpleMembershipAttribute.cs更改 >在WebSecurity.InitializeDatabaseConnection中将“UserName”更改为“Email”(“DefaultConnection”,“UserProfile”,“UserId”,“UserName”,autoCreateTables:true); >意见/帐户/ Login.cshtml >将m.UserName的三个用法更改为m.Email >意见/帐户/ Register.cshtml >复制并粘贴UserName< li>部分并将重复项m.UserName更改为m.Email 在一个vanilla Internet Application MVC 4项目中,这些更改将完美运行(在真正的vanilla项目中,如果要使用这些更改并且不编辑数据库以添加“电子邮件”列,则可能必须应用迁移). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 在回发数据时,MVC如何填充模型
- (推荐)第15章 扩展ASP.NET MVC (IModelBinder、
- asp.net – 微软的AJAX Toolkit与jQuery
- 如何在ASP.NET MVC网站中为cookie设置“安全”标
- 白话ASP.NET MVC之三:Controller是如何解析出来
- 使用ASP.NET MVC在JS文件中设置jQuery的ajax url
- asp.net – 在machine.config中存储连接字符串vs
- asp.net – Bind()还是Eval()自动使用HtmlEncode
- asp.net-mvc-4 – 将ASP.NET Core与旧版.Net Fra
- asp.net-mvc-3 – 如何确保Asp.net MVC项目中不同