如何使用身份提供程序对asp.net mvc 4应用程序实现身份验证

时间:2014-09-24 09:51:18

标签: c# .net asp.net-mvc asp.net-mvc-4 asp.net-identity

我有一个ASP.NET MVC 4 Web应用程序" APP1"其中使用DB First方法实现了Entity Framework。我现在想要为其添加身份验证,包括电子邮件和角色,如果我做对了,那么最先进的方法就是使用身份提供程序。我尝试的是制作一个新的mvc 4 Web应用程序" APP2"并将自动生成的Account-model, -views and -controller添加到我现有的" APP1" -application并使用其他EmailAdress属性扩展AccountModel:

[Table("UserProfile")]
public class UserProfile
{
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int UserId { get; set; }
    public string EmailAddress { get; set; }
    public string UserName { get; set; }
}

public class RegisterModel
{
    [Required]
    [Display(Name = "User name")]
    public string UserName { get; set; }

    [Required]
    [Display(Name = "Email")]
    public string EmailAddress { get; set; }

    [Required]
    [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
    [DataType(DataType.Password)]
    [Display(Name = "Password")]
    public string Password { get; set; }

    [DataType(DataType.Password)]
    [Display(Name = "Confirm password")]
    [Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]
    public string ConfirmPassword { get; set; }
}

我还将电子邮件地址的Label和TextBox添加到Register.cshtml视图:

<li>
        @Html.LabelFor(m => m.EmailAddress)
        @Html.TextBoxFor(m => m.EmailAddress)
</li>

到目前为止一切顺利。但是当运行WepApp并尝试加载/Account/Register视图时,它会引发错误,它发生在Filter/InitializeSimpleMembershipAttributes.cs

  

类型&#39; System.InvalidOperationException&#39;的例外情况发生在   NetradoxDotCom.dll但未在用户代码中处理

     

其他信息:ASP.NET Simple Membership数据库可以   没有被初始化。有关详细信息,请参阅   http://go.microsoft.com/fwlink/?LinkId=256588

我该如何解决这个问题?另外,我如何启用用户角色,例如管理员?

更新1 我解决了,登录页面现在正在工作!我所做的是在DefaultConnection文件中评论web.config ConnectionString:

<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-APP1-20131105213440;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-APP1-20131105213440.mdf" providerName="System.Data.SqlClient" />

到目前为止,这么好,但是是否也可以使用我的EF SQL Server实例?另外,最简单的角色扮演方法是什么?

更新2 我可以通过更改DefaultConnection文件中的web.config ConnectionString来更改数据库。

谢谢

0 个答案:

没有答案