Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Utilizzo di MVC 4 SimpleMembership con un modello EF esistente per il primo database

Puramente come punto di riferimento, potrebbe essere una buona idea creare un nuovo modello di applicazione Internet di un progetto di applicazione Web ASP.NET MVC 4 (ad esempio tramite File> Nuovo progetto).

Se guardi il AccountController , come dice @zms6445, è decorato con un InitializeSimpleMembership attributo. Puoi trovare l'implementazione di questo attributo nel file InitializeSimpleMembershipAttribute.cs nella cartella Filtri all'interno della directory principale.

Qui, questa è la parte mancante del puzzle:devi collegare il tuo database esistente in modo che venga utilizzato da SimpleMembershipProvider . Questo è il codice che ti serve:

private class SimpleMembershipInitializer
{
    public SimpleMembershipInitializer()
    {
        try
        {
            if (!WebSecurity.Initialized)
            {
                WebSecurity.InitializeDatabaseConnection("CONNECTION_STRING_NAME", "USER_TABLE", "USER_ID_FIELD", "USER_NAME_FIELD", autoCreateTables: true);
            }
        }
        catch (Exception ex)
        {
            throw new InvalidOperationException("Something is wrong", ex);
        }
    }
}

Alcune cose da notare:

  1. CONNECTION_STRING_NAME è una voce nel tuo Web.config ConnectionStrings - NON PUOI utilizzare la stringa di connessione del modello qui - il SimpleMembershipProvider non riconosce quel formato! Devi specificare un System.Data.SqlClient stringa di connessione, ad es.

  2. USER_TABLE è la tabella nel tuo database per contenere informazioni aggiuntive sull'utente, come nome, cognome, ecc. Questa è collegata alle tabelle generate automaticamente tramite USER_ID_FIELD.

  3. USER_ID_FIELD è solitamente la chiave primaria della tabella Utenti. Deve essere di tipo int .

  4. USER_ID_NAME è un nome univoco per l'utente, che potrebbe essere un indirizzo e-mail.

  5. autoCreateTables è impostato su true per garantire che le tabelle necessarie per il funzionamento di SimpleMembership vengano create se non esistono già.

Ovviamente, questo codice viene attivato solo se visiti una pagina tramite AccountController , poiché questo è stato decorato dall'attributo. Potresti inserire un punto di interruzione e vederlo in azione.

Questo dovrebbe iniziare:il modello di applicazione Internet è un modello abbastanza buono da seguire se rimani bloccato.

Spero che questo aiuti.