2012-09-23 4 views
6

Sto provando ad accedere alla tabella webpages_Membership (sto usando SimpleMembership) per recuperare l'account ConfirmationToken.MVC4: Quale entità rappresenta la tabella webpages_Membership

Come accedere a questa tabella dal modello/controller/DAL?

L'unica cosa che posso pensare è eseguire codice SQL puro dal mio codice per ottenere questo valore, ma non sembra che sia la cosa giusta da fare, né elegante.

risposta

2

Da quello che ho capito, non esiste un modo diretto per recuperare il valore utilizzando l'helper WebSecurity.

Quando si crea un utente e conto del metodo restituisce il token di conferma:

string confirmationToken = WebSecurity.CreateUserAndAccount("tester", "test123", requireConfirmationToken: true); 

È quindi inviare questo token (all'interno di un collegamento come parametro QueryString per esempio) per l'indirizzo di posta elettronica dell'utente. Quando l'utente fa clic sul collegamento, la vostra applicazione deve ricevere/leggere questo token e quindi si deve chiamare:

WebSecurity.ConfirmAccount(userName, confirmationToken); 

Come lei ha ricordato si può ovviamente colpire il db scrivendo direttamente il proprio SQL o anche aggiungere il webpages_Membership a un EntityFramewok EDMX modello ed interrogare la tabella direttamente:

var confirmationToken = Database.Memberships.Single(m => m.UserId == userId).ConfirmationToken; 

Maggiori informazioni su questo:

Using the confirmation feature for ASP.NET Web Pages security

Get Account Confirmation Token?

+0

Grazie Leniel. Quello che hai descritto è la mia intenzione, ma a volte l'utente (per qualsiasi motivo) vuole avere l'email di conferma rinviata. Come implementeremmo una funzione di re-invio senza usare sql personalizzato per recuperare il messaggio di conferma originale? – 9999bao

+0

In questo caso è possibile utilizzare l'helper Database qui descritto per recuperare il 'confirmationToken' per l'utente: http://www.mikesdotnetting.com/Article/156/WebMatrix-Database-Helpers-for-IN-Clauses –