sql >> Base de Datos >  >> RDS >> Sqlserver

Uso de MVC 4 SimpleMembership con un modelo EF de base de datos primero existente

Solo como punto de referencia, podría ser una buena idea crear una nueva plantilla de aplicación de Internet de un proyecto de aplicación web ASP.NET MVC 4 (es decir, a través de Archivo> Nuevo proyecto).

Si observa el AccountController , como dice @zms6445, está decorado con un InitializeSimpleMembership atributo. Puede encontrar la implementación de este atributo en el archivo InitializeSimpleMembershipAttribute.cs en la carpeta Filters dentro del directorio raíz.

Aquí, esta es la parte que falta del rompecabezas:debe conectar su base de datos existente para que la use el SimpleMembershipProvider . Este es el código que necesitas:

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

Algunas cosas a tener en cuenta:

  1. CONNECTION_STRING_NAME es una entrada en su web.config ConnectionStrings - NO PUEDE usar la cadena de conexión del modelo aquí - el SimpleMembershipProvider no reconoce ese formato! Debe especificar un System.Data.SqlClient cadena de conexión, p.

  2. USER_TABLE es la tabla en su base de datos para contener información adicional del usuario, como nombre, apellido, etc. Esto está vinculado a las tablas generadas automáticamente a través de USER_ID_FIELD.

  3. USER_ID_FIELD suele ser la clave principal de la tabla Usuarios. Debe ser de tipo int .

  4. USER_ID_NAME es un nombre único para el usuario, que podría ser una dirección de correo electrónico.

  5. autoCreateTables se establece en true para garantizar que se creen las tablas requeridas para que SimpleMembership funcione si aún no existen.

Por supuesto, este código solo se activa si accede a una página a través de AccountController , ya que este ha sido decorado por el atributo. Podría poner un punto de interrupción allí y verlo en acción.

Esto debería ayudarlo a comenzar:la plantilla de la aplicación de Internet es una plantilla bastante buena para seguir si se atasca.

Espero que esto ayude.