2010-06-10 42 views
6

Tôi mã trong C# (ASP.NET) và đang sử dụng Xác thực mẫu.
Tôi muốn biết đó là phương pháp tốt nhất để thay đổi mật khẩu người dùng mà không cần sử dụng điều khiển asp: ChangePassword.
Tôi không muốn sử dụng phương pháp đặt lại mật khẩu.
Tôi chỉ muốn lấy mật khẩu tôi có bên trong hộp văn bản của mình và thay thế bằng mật khẩu cũ của tôi.
Xin lưu ý rằng PasswordFormat tôi sử dụng là passwordFormat = "băm"
Một số đoạn mã sẽ là hữu ích

Edit:Thay đổi mật khẩu người dùng trong ASP.NET Forms Authentication

Trong web.config của tôi, tôi đã thiết enablePasswordRetrieval = "false"
tôi sử dụng các phương pháp sau đây

var myUser = Membership.GetUser(userID); 
bool isChangeSuccess = myUser.ChangePassword(
    myUser.GetPassword(), 
    ActivateUserPasswordText.Text.Trim()); 

Nó mang lại cho tôi những lỗi,

Nhà cung cấp tư cách thành viên này chưa được định cấu hình để hỗ trợ mật khẩu truy xuất.

Điều gì có thể được thực hiện để giải quyết những vấn đề này? Tôi thực sự muốn PasswordFormat của tôi là băm chính nó.

Kính trọng,
Naveen Jose

Trả lời

18

Giải quyết vấn đề. Nhờ nhà phát triển đồng nghiệp của tôi.

var myUser = Membership.GetUser(userID); 
bool isChangeSuccess = myUser.ChangePassword(
    myUser.ResetPassword(), 
    ActivateUserPasswordText.Text.Trim()); 

Có thể nói là tôi rất thích.
Tôi nghĩ ResetPassword() sẽ trả về một bool.

+0

Nó trả về một chuỗi với mật khẩu mới được tạo ngẫu nhiên http://msdn.microsoft.com/en-us/library/system.web.security.membershipuser. resetpassword.aspx –

+1

@JPHellemons: Tôi đã nói tôi nghĩ :) – naveen

2

Chỉ có giá trị Hash cho các mật khẩu thường được lưu trữ bởi các nhà cung cấp thành viên asp.net, vì vậy nó không thể lấy lại mật khẩu ban đầu. Có thể thay đổi hành vi này theo cấu hình, nhưng nó không được khuyến khích.
Chỉ cần yêu cầu người dùng nhập mật khẩu cũ cũng trong khi thay đổi mật khẩu. Bạn có thể sử dụng mật khẩu cũ do người dùng nhập vào trong phương thức User.ChangePassword và nó sẽ hoạt động tốt.

+0

Ý định của tôi là tạo mật khẩu truy xuất cho mật khẩu bị mất – naveen

1

Nhà cung cấp tư cách thành viên này chưa được định cấu hình để hỗ trợ truy xuất mật khẩu.

Thông báo trên được hiển thị vì định dạng mật khẩu của bạn sẽ là muối và do đó bạn không thể lấy mật khẩu của người dùng. Nếu bạn muốn thực hiện việc này, hãy thay đổi định dạng mật khẩu và thử lại.

+0

cảm ơn dileep. tôi đã tò mò hơn về cách lấy lại mật khẩu cũ và 'ChangePassword' không yêu cầu mật khẩu cũ làm tham số của nó. – naveen

1

Trên cơ hội ra ai đó đang sử dụng ApplicationUser và không phải là thành viên - như tôi là vì tôi không muốn để thiết lập một nhà cung cấp thành viên - bạn có thể thay đổi mật khẩu theo cách này:

  Dim manager = New UserManager() 
      Dim userChange As ApplicationUser = manager.FindById(IDUser) 

      userChange.PasswordHash = manager.PasswordHasher.HashPassword(newPassword.Value) 
      Dim val As Object = manager.Update(userChange) 

Hope this helps ai đó

Các vấn đề liên quan