Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Utilisation de MVC 4 SimpleMembership avec un modèle EF de base de données existant

À titre purement indicatif, il peut être judicieux de créer un nouveau modèle d'application Internet d'un projet d'application Web ASP.NET MVC 4 (c'est-à-dire via Fichier> Nouveau projet).

Si vous regardez le AccountController , comme le dit @zms6445, il est décoré d'un InitializeSimpleMembership attribut. Vous pouvez trouver l'implémentation de cet attribut dans le fichier InitializeSimpleMembershipAttribute.cs dans le dossier Filters du répertoire racine.

Ici, c'est la partie manquante du puzzle - vous devez connecter votre base de données existante afin qu'elle soit utilisée par le SimpleMembershipProvider . Voici le code dont vous avez besoin :

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);
        }
    }
}

Quelques points à noter :

  1. CONNECTION_STRING_NAME est une entrée dans votre web.config ConnectionStrings - vous NE POUVEZ PAS utiliser la chaîne de connexion du modèle ici - le SimpleMembershipProvider ne reconnaît pas ce format ! Vous devez spécifier un System.Data.SqlClient chaîne de connexion, par ex.

  2. USER_TABLE est la table de votre base de données contenant des informations supplémentaires sur l'utilisateur, telles que le prénom, le nom, etc. Elle est liée aux tables générées automatiquement via USER_ID_FIELD.

  3. USER_ID_FIELD est généralement la clé primaire de votre table Users. Il doit être de type int .

  4. USER_ID_NAME est un nom unique pour l'utilisateur, qui peut être une adresse e-mail.

  5. autoCreateTables est défini sur true pour s'assurer que les tables nécessaires au fonctionnement de SimpleMembership sont créées si elles n'existent pas déjà.

Bien sûr, ce code n'est déclenché que si vous accédez à une page via le AccountController , puisqu'il a été décoré par l'attribut. Vous pouvez y mettre un point d'arrêt et le voir en action.

Cela devrait vous aider à démarrer - le modèle d'application Internet est un très bon modèle à suivre si vous êtes bloqué.

J'espère que cela vous aidera.