Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Usando MVC 4 SimpleMembership com um modelo EF existente em primeiro lugar


Apenas como um ponto de referência, pode ser uma boa ideia criar um novo modelo de aplicativo de Internet de um projeto de aplicativo da Web ASP.NET MVC 4 (ou seja, via Arquivo> Novo projeto).

Se você olhar para o AccountController , como diz @zms6445, ele é decorado com um InitializeSimpleMembership atributo. Você pode encontrar a implementação desse atributo no arquivo InitializeSimpleMembershipAttribute.cs na pasta Filtros no diretório raiz.

Aqui, esta é a parte que falta do quebra-cabeça - você precisa conectar seu banco de dados existente para que ele seja usado pelo SimpleMembershipProvider . Este é o código que você precisa:
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);
        }
    }
}

Algumas coisas a serem observadas:

  1. CONNECTION_STRING_NAME é uma entrada em seu web.config ConnectionStrings - você NÃO PODE usar a string de conexão do modelo aqui - o SimpleMembershipProvider não reconhece esse formato! Você precisa especificar um System.Data.SqlClient cadeia de conexão, por exemplo



  2. USER_TABLE é a tabela em seu banco de dados para armazenar informações extras do usuário, como nome, sobrenome etc. Ela está vinculada às tabelas geradas automaticamente por meio do USER_ID_FIELD.

  3. USER_ID_FIELD geralmente é a chave primária da sua tabela Users. Deve ser do tipo int .

  4. USER_ID_NAME é um nome exclusivo para o usuário, que pode ser um endereço de e-mail.

  5. autoCreateTables está definido como true para garantir que as tabelas necessárias para que o SimpleMembership funcione sejam criadas, caso ainda não existam.

Claro, esse código só é acionado se você acessar uma página por meio do AccountController , já que este foi decorado pelo atributo. Você pode colocar um ponto de interrupção lá e vê-lo em ação.

Isso deve começar - o modelo de aplicativo da Internet é um modelo muito bom para seguir se você ficar preso.

Espero que isto ajude.