【问题标题】:Import users to aspnet_membership table将用户导入 aspnet_membership 表
【发布时间】:2011-08-01 02:11:19
【问题描述】:

我正在尝试使用 TSQL 将 1000 个用户导入 aspnet_membership 表。任何人都可以请我指出正确的方向,这是否可能?

要求是:

  1. 创建用户和配置文件。
  2. 生成密码。
  3. 将密码通过电子邮件发送给最终用户。

谢谢。

【问题讨论】:

  • 有什么理由必须直接使用 TSQL 执行此操作吗?您可以使用 SqlMembershipProvider 使用 C# 中的简单应用程序轻松完成此操作。
  • 将是一个常规过程,我正在考虑使用 SSIS 包。

标签: asp.net asp.net-membership


【解决方案1】:

如果您要使用未加密的密码格式,那么您只需从 SQL 调用 dbo.aspnet_Membership_CreateUser 存储过程来创建用户。它需要一堆参数; @ApplicationName
@用户名
@密码
@PasswordSalt
@电子邮件
@密码问题
@PasswordAnswer
@IsApproved
@CurrentTimeUtc
@CreateDate
@UniqueEmail
@PasswordFormat
@UserId(输出)

您可以在 TSQL 中生成密码,也可以从 TSQL 发送电子邮件。此存储过程:dbo.aspnet_Profile_SetProperties 将设置配置文件属性。

如果您需要散列或加密密码......那么您可能必须编写一些使用会员资格和个人资料提供程序的管理代码。这样做应该相当容易。提供者拥有生成和加密密码所需的所有方法。 要创建用户,您只需调用:

创建用户 ( 字符串用户名, 字符串密码, 字符串电子邮件, 字符串密码问题, 字符串密码答案, 布尔已批准, 对象提供者UserKey, out MembershipCreateStatus 状态)

方法并传入数据。加密将发生在方法内部。

因此,如果您不需要加密或散列密码,TSQL 就可以工作。否则它会是一些编码.. 但真的很少。

【讨论】:

  • 谢谢,但是,我应该为这些参数输入什么:PasswordSalt,@urrentTimeUtc,passwordFormat
  • 0 表示密码格式(这将意味着明文,@urrentTimeUtc - 当前日期 UTC,PasswordSalt 不会用于明文密码......所以任何事情都可能会工作。
  • 我唯一想不通的是如何伪造用户名和密码盐?!?我无法使用配置创建成员资格,因此我必须使用数据库输入它们。我不能把NULL 值放在希望它能弥补我的价值上,所以我有点卡住了。
【解决方案2】:

嗯,AFAIK - 没有自动向导来执行此操作,您需要通过它进行编码。您可以使用 SQL 语句导入用户和配置文件。然而,GeneratePassword 和 Emailing 是您可能希望将其视为一个单独的过程以使其更松散耦合。

【讨论】:

    猜你喜欢
    • 2015-01-19
    • 2021-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多