Bạn có thể tạo bảng UserProfile mà bạn có thể sử dụng để nối từ bảng Người dùng vào bảng Bài đăng của bạn. Điều này sẽ ngăn cách bạn với các thành viên của Nhà cung cấp Thành viên ASP.NET và có thể là một điểm mở rộng cho thông tin người dùng bổ sung.
Dưới đây là một thủ tục lưu trữ và chức năng liên quan mà tôi sử dụng để tạo người dùng mới và hồ sơ của họ:
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
Nguồn
2010-06-02 15:06:46
cách sao lưu và khôi phục toàn bộ bảng Người dùng (bao gồm cả ID)? – Marek