如何在我开发的Web应用程序中实现Asp.net成员资格

时间:2014-08-29 03:40:45

标签: asp.net asp.net-membership

我正在开发一个Web应用程序。我已经完成了。但是当我通过安全审核时,我才知道我应该使用asp.net会员资格,登录,密码更改,创建用户,重置密码等。

所以我盯着使用asp.net会员资格。我创建了一个登录页面,它工作正常。我的App_Data文件夹中也有一个数据库。

enter image description here

问题是我的应用程序已经有了一个数据库,我有一个用户表,其中包含的字段多于表aspnet_Users。见下图。

enter image description here

所以请建议我如何在我的Web应用程序中实现asp.net成员资格,因为我需要在用户表中添加更多字段,

如何使用上面图片中提到的字段将数据与我的字段一起插入,因为我没有通过使用asp.net成员资格来完善任何代码。如果我能得到,我肯定会做出相应的改变。

我的意思是如何在没有任何代码的情况下合并此数据库和我的数据库。

2 个答案:

答案 0 :(得分:0)

我还建议您使用ASP.Net Identity,因为它是处理安全性的框架。

但是,如果您打算使用简单会员资格,这里有一些代码可以帮助您添加字段"到你的用户表。

首先,使用所有需要的属性创建用户模型,如下所示:

[Table("User")]
public class User
{
    public int UserId { get; set; }

    [Display(Name = "User name")]
    [Required(ErrorMessage = "Usernname is required.")]
    [StringLength(80, ErrorMessage = "Please enter a value no more than 80 characters.")]
    public string UserName { get; set; }

    [Display(Name = "First Name")]
    [Required(ErrorMessage = "First name is required.")]
    [StringLength(80, ErrorMessage = "Please enter a value no more than 80 characters.")]
    public string FirstName { get; set; }

    [Display(Name = "Last Name")]
    [Required(ErrorMessage = "Last name is required.")]
    [StringLength(80, ErrorMessage = "Please enter a value no more than 80 characters.")]
    public string LastName { get; set; }

    [Required]
    [Display(Name = "Email")]
    [DataType(DataType.EmailAddress)]
    [StringLength(254, ErrorMessage = "Please enter a value no more than 254 characters.")]
    public string Email { get; set; }

   //Add other properties... etc
}

接下来,编写代码以初始化数据库。您可能在InitializeSimpleMembershipAttribute.cs文件中的某处具有此代码。或者,您可以从那里取出并放入您的Application Start方法。以下是您需要修改的部分:

WebSecurity.InitializeDatabaseConnection("YourDBConnectionName", "User", "UserId", "UserName", autoCreateTables: true);
//Modify the above properties if you change your user model to be a different table name 

请参阅InitializeDatabaseConnection的参考资料。

现在,当您想要创建用户时,请调用以下方法:

WebSecurity.CreateUserAndAccount(user.UserName, user.Password, new { user.Email, user.FirstName, user.LastName });

//user is the User object that has all your data populated from some type of input

参考创建用户帐户:CreateUserAndAccount

答案 1 :(得分:0)

您尝试实施的是使用 aspnet_regsql.exe 创建的旧版 ASP.Net成员资格提供程序不要使用它,因为很久以前它已被弃用。

目前,Microsoft提供3种类型的会员资格 -

  1. ASP.NET Universal Providers
  2. 简单会员提供者
  3. ASP.NET标识
  4. 由于您的应用是新的,并且没有现有用户,因此您想使用 -

    ASP.NET Identity 2

      

    问题是我的应用程序已经有了一个数据库   我有一个用户表,其中包含的字段多于表   aspnet_Users。

    ASP.Net Identity允许您在用户表中创建自定义字段。

    仅供参考: 请务必使用版本2.