我想将现有论坛中的用户和帖子从不使用CreateUser的情况下迁移到ASP.NET成员资格表中。基本上我想维护用户ID,以便在迁移帖子时,他们继续与正确的用户关联。有没有办法做到这一点,或者我最好只使用CreateUser,然后找到一种方法来重新分配正确的新ID的后用户ID?如何在不使用CreateUser的情况下在ASP.NET成员资格表中创建用户
感谢
我想将现有论坛中的用户和帖子从不使用CreateUser的情况下迁移到ASP.NET成员资格表中。基本上我想维护用户ID,以便在迁移帖子时,他们继续与正确的用户关联。有没有办法做到这一点,或者我最好只使用CreateUser,然后找到一种方法来重新分配正确的新ID的后用户ID?如何在不使用CreateUser的情况下在ASP.NET成员资格表中创建用户
感谢
你可以创建一个可以使用来自用户表加入到后您的表中的用户配置表。这将使您与ASP.NET成员提供程序的内部隔离,并且可以成为其他用户信息的扩展点。
下面是一个存储过程,我用它来创建新的用户和他们的个人资料相关联的功能:
CREATE PROCEDURE [dbo].[CreateUser]
@UserName nvarchar(256)
, @ClearTextPassword nvarchar(128)
, @Email nvarchar(256)
, @PostingID uniqueidentifier
AS
BEGIN
DECLARE @ApplicationName nvarchar(256)
DECLARE @PasswordFormat int
DECLARE @UnencodedSalt uniqueidentifier
DECLARE @Password nvarchar(128)
DECLARE @PasswordSalt nvarchar(128)
DECLARE @Now DATETIME
DECLARE @UniqueEmail int
SET @ApplicationName = 'YOUR_APPLICATION_NAME'
SET @PasswordFormat = 1
SET @UnencodedSalt = NEWID()
SET @PasswordSalt = dbo.base64_encode(@UnencodedSalt)
SET @Password = dbo.base64_encode(HASHBYTES('SHA1',
CAST(@UnencodedSalt as varbinary(MAX))
+ CAST(@ClearTextPassword AS varbinary(MAX))))
SET @Now = getutcdate()
SET @UniqueEmail = 1
BEGIN TRANSACTION
DECLARE @UserId uniqueidentifier
EXECUTE [dbo].[aspnet_Membership_CreateUser]
@ApplicationName
,@UserName
,@Password
,@PasswordSalt
,@Email
,NULL
,NULL
,1
,@Now
,@Now
,@UniqueEmail
,@PasswordFormat
,@UserId OUTPUT
INSERT INTO [dbo].[UserProfile]
(
[UserID]
,[PostingID]
)
VALUES
(
@UserId
,@PostingID
)
COMMIT
CREATE FUNCTION [dbo].[base64_decode]
(@base64_text VARCHAR(max))
RETURNS VARBINARY(max)
WITH SCHEMABINDING, RETURNS NULL ON NULL INPUT
BEGIN
DECLARE @x XML; SET @x = @base64_text
RETURN @x.value('(/)[1]', 'VARBINARY(max)')
END
CREATE FUNCTION [dbo].[base64_encode]
(@data VARBINARY(max))
RETURNS VARCHAR(max)
WITH SCHEMABINDING, RETURNS NULL ON NULL INPUT
BEGIN
RETURN (
SELECT [text()] = @data
FOR XML PATH('')
)
END
你实际上并没有在这里使用你的base64_decode函数,但很高兴我猜。 – robbie 2011-02-25 04:52:43
我会做的就是我会创造你的用户的表和ASP成员关系表,其中的成员之间的联系表ID(电子邮件地址?)将与UserID(Integer?)相关。然后,我将创建一个例程来创建用户并以编程方式用用户数据填充成员表 - 通过.NET代码执行起来要容易一些。
如何备份和恢复整个Users表(包括ID)? – Marek 2010-06-02 14:44:28