smd*_*ger 9 asp.net asp.net-membership
我想将用户和帖子从我正在使用的现有论坛迁移到ASP.NET成员资格表而不使用CreateUser.基本上我想维护用户ID,这样当我迁移帖子时,他们会继续与正确的用户相关联.有没有办法做到这一点,或者我会更好地使用CreateUser,然后找到一种方法将post-by-UserID重新分配给正确的新ID?
谢谢
Eve*_*ien 11
您可以创建一个UserProfile表,您可以使用该表从User表连接到Post表.这将使您与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
| 归档时间: | 
 | 
| 查看次数: | 10367 次 | 
| 最近记录: |