Ho un codice veramente vecchio (brutto) da un'app che ho creato qualche anno fa. È praticamente un attacco di un controllo gridview che usa il proc memorizzato aspnet_Membership_UnlockUser come comando delete con la chiave impostata come username dell'utente bloccato nella griglia. Non ho nemmeno usato C#. Ecco cosa ho:
Ecco il vecchio processo memorizzato che ho scritto utilizzato da gridview. Tutto questo può essere fatto molto meglio, ma questo è quello che ho fatto allora e funziona bene.
CREATE PROCEDURE [dbo].[selLockedOutUsers]
AS
SELECT
m.ApplicationId as applicationId,
a.ApplicationName as applicationName,
m.UserId as userId,
u.UserName as UserName,
m.IsLockedOut as isLockedOut,
m.LastLoginDate as lastLoginDate,
m.LastLockoutDate as lastLockoutDate,
m.FailedPasswordAttemptCount as failedPasswordAttemptCount
FROM
aspnet_Membership m
JOIN aspnet_Users u ON m.UserId = u.UserId
JOIN aspnet_Applications a ON m.ApplicationId = a.ApplicationId
WHERE
m.IsLockedOut = '1'
Di seguito è stato modificato il mio aspnet_Membership_UnlockUser stored proc. Come puoi vedere, ho rimosso il parametro del nome dell'app e l'ho impostato manualmente nel proc. In questo modo ho solo bisogno di passare il nome utente come parametro.
ALTER PROCEDURE [dbo].[aspnet_Membership_UnlockUser]
[email protected] nvarchar(256), --replaced with '/'
@UserName nvarchar(256)
AS
BEGIN
DECLARE @UserId uniqueidentifier
SELECT @UserId = NULL
SELECT @UserId = u.UserId
FROM dbo.aspnet_Users u, dbo.aspnet_Applications a, dbo.aspnet_Membership m
WHERE LoweredUserName = LOWER(@UserName) AND
u.ApplicationId = a.ApplicationId AND
LOWER('/') = a.LoweredApplicationName AND
u.UserId = m.UserId
IF (@UserId IS NULL)
RETURN 1
UPDATE dbo.aspnet_Membership
SET IsLockedOut = 0,
FailedPasswordAttemptCount = 0,
FailedPasswordAttemptWindowStart = CONVERT(datetime, '17540101', 112),
FailedPasswordAnswerAttemptCount = 0,
FailedPasswordAnswerAttemptWindowStart = CONVERT(datetime, '17540101', 112),
LastLockoutDate = CONVERT(datetime, '17540101', 112)
WHERE @UserId = UserId
RETURN 0
END
+1 per il controllo Manager L'iscrizione Data Quality –