【问题标题】:How to implement Asp.net membership in my developed web application如何在我开发的 Web 应用程序中实现 Asp.net 成员资格
【发布时间】:2014-08-29 03:40:44
【问题描述】:

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

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

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

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

如何将数据连同我的字段与上图中提到的字段一起插入,因为我没有通过使用 asp.net 成员资格对任何代码进行罚款。如果我能得到,我一定会做出相应的改变。

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

【问题讨论】:

  • 使用 Asp.net Profile 可以插入任意数量的值。
  • 但是如果我想要一些其他的东西,在哪里更改代码。
  • 您必须在 web.config 中添加要存储的属性,然后添加配置文件并保存配置文件。当用户通过身份验证时,您将设置配置文件属性并保存配置文件。跨度>
  • 根据经验,会员资料的使用限制太大,而且不必要地复杂。如果我是你,我会看看使用 ASP.NET 身份,这是一种新的和大大改进的会员系统。 asp.net/identity/overview/getting-started/…
  • @Gaurav.. 你能看一下吗.. stackoverflow.com/questions/32924232/…

标签: asp.net asp.net-membership


【解决方案1】:

我还建议您使用 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

【讨论】:

【解决方案2】:

您尝试实施的是使用 aspnet_regsql.exe 创建的旧版 ASP.Net Membership Provider不要使用它,因为它早就被弃用了。

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

  1. ASP.NET Universal Providers
  2. 简单的会员提供者
  3. ASP.NET 身份

由于您的应用程序是新的并且没有现有用户,因此您想使用 -

ASP.NET Identity 2

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

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

仅供参考:确保您使用的是第 2 版。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2010-10-23
  • 2010-12-23
  • 1970-01-01
  • 1970-01-01
  • 2015-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多