2013-02-25 36 views
18

Tôi đã viết một ứng dụng web bằng mẫu Internet MVC4. Tôi thực sự không cần bất cứ điều gì phức tạp cho quản lý người dùng, vì vậy tôi đã đi với SimpleMembershipProvider mặc định. Tôi đang khởi tạo tư cách thành viên trong App_Start và tôi có vai trò và người dùng được thiết lập và làm việc. Tôi không sử dụng SSO hoặc bất kỳ tính năng OAuth nào khác. Bây giờ tôi có một người kiểm tra đã quên mật khẩu của mình và sau khi googling cả ngày tôi nhận ra tôi không có ý tưởng làm thế nào để chỉ cần thiết lập lại mật khẩu của mình hoặc thay đổi nó!Làm cách nào để đặt lại hoặc thay đổi mật khẩu bằng SimpleMembership trong MVC4?

Tôi đã đọc qua tài liệu và thấy rằng hàm ResetPassword is not supported if using SimpleMembership. Câu hỏi của tôi là, làm thế nào tôi hoặc là:

  1. chuyển từ SimpleMembership để thành viên tiêu chuẩn mà sử dụng các bảng SimpleMembership và định dạng
  2. đặt lại mật khẩu của người dùng để cái gì đó tôi chỉ định?

Tôi đã tìm thấy cài đặt web.config (theo lý thuyết) đặt nhà cung cấp thành viên sử dụng SimpleMembership, nhưng tôi không chắc chắn cách chỉ định bảng để sử dụng (giả sử đó là cách phù hợp để thực hiện).

phần web.config:

<roleManager enabled="true" defaultProvider="SimpleRoleProvider"> 
    <providers> 
    <clear/> 
    <add name="SimpleRoleProvider" type="WebMatrix.WebData.SimpleRoleProvider, WebMatrix.WebData"/> 
    </providers> 
</roleManager> 
<membership defaultProvider="SimpleMembershipProvider"> 
    <providers> 
    <clear/> 
    <add name="SimpleMembershipProvider" type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData" /> 
    </providers> 
</membership> 

và InitializeDatabaseConnection hiện tại mà tôi (nghĩ) Tôi cần phải có trong web.config:

WebSecurity.InitializeDatabaseConnection("UPEFSSecurity", "Datamart_User", "UserId", "UserName", autoCreateTables: true); 
+0

http://stackoverflow.com/questions/13212938/forgot-password-email-confirmation-in-asp-net-mvc-webmatrix/ 16985811 # 16985811 Điều này sẽ đáp ứng các yêu cầu của bạn :) –

Trả lời

45

Để làm điều này đúng cách bạn sẽ cần phải thiết lập liên kết khôi phục email. Nhưng đây là API gọi cho bạn sẽ làm cho:

var token = WebSecurity.GeneratePasswordResetToken(username); 
// create a link with this token and send email 

// link directed to an action with form to capture password 
WebSecurity.ResetPassword(token, password); 

http://msdn.microsoft.com/en-us/library/webmatrix.webdata.websecurity.resetpassword(v=vs.111).aspx

+2

Cảm ơn bạn! Điều đó dường như hoạt động tốt – Elsimer

+0

Tôi thích những gì bạn đã làm ở đó! ;-) –

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