2013-02-25 12 views
18

Sto scrivendo un'applicazione Web utilizzando il modello Internet MVC4. Non avevo davvero bisogno di nulla di complicato per la gestione degli utenti, quindi sono andato con il SimpleMembershipProvider predefinito. Sto inizializzando l'abbonamento a App_Start e ho ruoli e utenti configurati e funzionanti. Non sto usando SSO o nessuna delle altre funzionalità di OAuth. Ora ho un tester che ha dimenticato la sua password e dopo aver cercato su Google tutto il giorno mi rendo conto che non ho idea di come resettare la sua password o cambiarla!Come si ripristinano o si modificano le password utilizzando SimpleMembership in MVC4?

Ho letto la documentazione e ho scoperto che la funzione ResetPassword is not supported if using SimpleMembership. La mia domanda è, come faccio uno:

  1. passaggio da SimpleMembership all'adesione standard che utilizza le tabelle SimpleMembership e il formato
  2. reimpostare la password dell'utente a qualcosa specificata?

ho trovato le impostazioni web.config per (teoricamente) impostare il provider di appartenenze di utilizzare SimpleMembership, ma non sono sicuro di come specificare la tabella da utilizzare (assumendo che questo sia il modo giusto per farlo).

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

e l'InitializeDatabaseConnection corrente che io (credo) ho bisogno di avere nel 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 Questo sarà sufficiente per le vostre esigenze :) –

risposta

45

Per farlo correttamente si avrebbe bisogno di configurare un collegamento per il recupero della posta elettronica. Ma ecco la chiamate API si dovrebbe fare:

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

Grazie! Sembra funzionare bene – Elsimer

+0

Mi piace quello che hai fatto lì! ;-) –

Problemi correlati