2013-02-25 12 views
18

Piszę aplikację internetową za pomocą szablonu internetowego MVC4. Naprawdę nie potrzebowałem niczego skomplikowanego do zarządzania użytkownikami, więc poszedłem z domyślnym SimpleMembershipProvider. Inicjuję członkostwo w App_Start, a ja mam role i użytkowników skonfigurowanych i działających. Nie używam SSO ani żadnej z innych funkcji protokołu OAuth. Teraz mam tester, który zapomniał hasła i po uruchomieniu go przez cały dzień zdaję sobie sprawę, że nie mam pojęcia, jak po prostu zresetować hasło lub je zmienić!Jak zresetować lub zmienić hasło przy użyciu SimpleMembership w MVC4?

Przeczytałem dokumentację i odkryłem, że funkcja ResetPassword is not supported if using SimpleMembership. Moje pytanie brzmi, jak to zrobić albo:

  1. przełącznik z SimpleMembership do standardowego członkostwa, który używa tabel SimpleMembership i formatu
  2. zresetować hasło użytkownika do czegoś określić?

Znalazłem ustawienia web.config, aby (teoretycznie) ustawić dostawcę członkostwa, aby używać SimpleMembership, ale nie jestem pewien, jak określić tabelę do użycia (zakładając, że jest to właściwy sposób to zrobić).

sekcja 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> 

i prąd InitializeDatabaseConnection że (chyba) muszę mieć w pliku 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 To wystarczy, aby spełnić Twoje wymagania :) –

Odpowiedz

45

Aby to zrobić właściwie trzeba by skonfiguruj link odzyskiwania wiadomości e-mail. Ale oto wywołań API byś zrobić:

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

Dziękujemy! To wydaje się dobrze działać – Elsimer

+0

Podoba mi się to, co tam zrobiłeś! ;-) –

Powiązane problemy