Pruebe los siguientes guiones:
Paso función definida por el usuario 1. para codificar la contraseña y la sal
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 GO
Paso 2. Procedimiento almacenado para crear usuario suscrito
CREATE PROCEDURE [dbo].[CreateUser]
@UserName nvarchar(256)
, @ClearTextPassword nvarchar(128)
, @Email nvarchar(256)
, @pUserId 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
DECLARE @UserId uniqueidentifier
SET @ApplicationName = 'ApplicationName' --Find in aspnet_Applications.ApplicationName
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
SET @[email protected]
BEGIN TRANSACTION
--DECLARE @UserId uniqueidentifier
EXECUTE [dbo].[aspnet_Membership_CreateUser]
@ApplicationName
,@UserName
,@Password
,@PasswordSalt
,@Email
,NULL
,NULL
,1 -- IsApproved == true
,@Now
,@Now
,@UniqueEmail
,@PasswordFormat
,@UserId OUTPUT
COMMIT
END
GO
Paso 3. Crear el usuario
DECLARE @UserId uniqueidentifier
SET @UserId = NewId()
EXECUTE [dbo].[CreateUser]
'UserName' [email protected]
,'[email protected] '[email protected]
,'[email protected] '[email protected]
,@UserId --User's uniqueidentifier
Notas adicionales:
- verificar el nombre de la aplicación es correcto en el elemento de miembros web.config.
- Recuerde crear roles y agregar usuarios a roles.
NO He copiado una contraseña y la sal existente de otro usuario mío y lo utilizó para este nuevo usuario, así como en la instrucción de inserción – PositiveGuy
"Membresía proveedor/API "sí, eso es lo que está roto en el código, y no tengo tiempo para arreglarlo ahora mismo ... necesito crear un usuario ahora para una prueba/emergencia de mantenimiento – PositiveGuy
@CoffeeAddict Ok, bueno solo haz esto. Cree una aplicación que tenga un archivo de configuración con un connectionString apuntando a su base de datos, una sección de proveedor de membresía usando esa cadena de conexión (y su otro nombre de aplicación), y roleManager con los mismos detalles. –