2012-04-20 3 views
0

Я собираюсь обновить вопрос безопасности и ответить в aspnet_Membership. Обычно это делается по коду:Обновить пароль пользователя членства aspnet

user.ChangePasswordQuestionAndAnswer(password, question, answer); 

Но я не знаю пароля. Я обнаружил, что есть по умолчанию хранится procedure.The хранимой процедуры:

SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER OFF 
GO 
ALTER PROCEDURE [dbo].[aspnet_Membership_ChangePasswordQuestionAndAnswer] 
    @ApplicationName  nvarchar(256), 
    @UserName    nvarchar(256), 
    @NewPasswordQuestion nvarchar(256), 
    @NewPasswordAnswer  nvarchar(128) 
AS 
BEGIN 
    DECLARE @UserId uniqueidentifier 
    SELECT @UserId = NULL 
    SELECT @UserId = u.UserId 
    FROM dbo.aspnet_Membership m, dbo.aspnet_Users u, dbo.aspnet_Applications a 
    WHERE LoweredUserName = LOWER(@UserName) AND 
     u.ApplicationId = a.ApplicationId AND 
     LOWER(@ApplicationName) = a.LoweredApplicationName AND 
     u.UserId = m.UserId 
    IF (@UserId IS NULL) 
    BEGIN 
     RETURN(1) 
    END 

    UPDATE dbo.aspnet_Membership 
    SET PasswordQuestion = @NewPasswordQuestion, PasswordAnswer = @NewPasswordAnswer 
    WHERE [email protected] 
    RETURN(0) 
    END 

Однако я только что нашел ответ явного текста. Как я могу использовать хранимую процедуру и хешировать ее?

Спасибо.

+0

Я не» На самом деле я понимаю этот вопрос, но похоже, что вы спрашиваете, можно ли хэш-ответы? Если это так, вам может потребоваться взглянуть на 'HASHBYTES': http://msdn.microsoft.com/en-us/library/ms174415.aspx –

+1

Отраженный путь ASP.NET: http: // форумы. asp.net/t/1338984.aspx/1 –

+0

@Tim, он запросил пароль, но я полагаю, что админы не знают пароль пользователя. –

ответ

2

Если у вас есть доступ к пользователю вы можете изменить свой пароль перед использованием метода членства:

public virtual bool ChangePassword(string oldPassword, string newPassword) 

Вы можете попробовать

string newPassword = user.ResetPassword(); 
user.ChangePassword(newPassword, "SOMENEWPASSWORD"); 

Затем сделайте

user.ChangePasswordQuestionAndAnswer("SOMENEWPASSWORD", question, answer); 
+0

Жесткая часть - мы должны сбросить пароль пользователя. Но пользователь, возможно, не хочет этого делать. Я хочу этого избежать. –

+0

Являются ли пароли пользователей хранятся как Hashed? – Juan

+0

Я так думаю. В web.config:

Смежные вопросы