tutorial net mvc framework first espaƱol datos conexion code asp asp.net-mvc-4 entity-framework-5 sql-server-2012 simplemembership ef-database-first

asp.net-mvc-4 - net - mvc 5



Uso de MVC 4 SimpleMembership con un modelo EF existente primero en la base de datos (2)

¡Estoy tratando de usar SimpleMembership en mi MVC 4 por primera vez y ya tengo una base de datos existente y un modelo EF5 creado en base a eso! Busqué mucho, pero no encuentro cómo podría usarlo en mi caso y también tener todo bajo mi propio modelo.

Sería genial si alguien me pudiera dar una idea de cómo hacer esto.

Gracias


En su web.config en la etiqueta appSettings, agregue la línea

<add key="enableSimpleMembership" value="true"/>

SimpleMembership está integrado, por lo que desde aquí simplemente necesita escribir

[InitializeSimpleMembership]

por encima de su clase pública AccountController: Controlador

Cuando quiere forzar a un usuario a iniciar sesión en una página determinada, escriba en el controlador de páginas.

[Authorize]

Estas tablas se generarán automáticamente en su base de datos. Si desea agregar más campos a estas tablas, simplemente deberá buscarlo en Google.

Aquí hay un enlace para obtener más información http://weblogs.asp.net/jgalloway/archive/2012/08/29/simplemembership-membership-providers-universal-providers-and-the-new-asp-net-4-5-web-forms-and-asp-net-mvc-4-templates.aspx


Simplemente como un punto de referencia, puede 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 atributo InitializeSimpleMembership . Puede encontrar la implementación de este atributo en el archivo InitializeSimpleMembershipAttribute.cs en la carpeta Filtros dentro del directorio raíz.

Aquí, esta es la parte faltante del rompecabezas: debe conectar su base de datos existente para que la utilice 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 SE PUEDE usar la cadena de conexión del modelo aquí) ¡ SimpleMembershipProvider no reconoce ese formato! System.Data.SqlClient especificar una cadena de conexión System.Data.SqlClient , por ejemplo,

    <add name = "CONNECTION_STRING_NAME" connectionString = "fuente de datos = SERVIDOR; catálogo inicial = BASE DE DATOS; ID de usuario = USUARIO; contraseña = CONTRASEÑA;" providerName = "System.Data.SqlClient" />

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

  3. USER_ID_FIELD suele ser la clave principal de su tabla de 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 las tablas necesarias para que SimpleMembership funcione se creen si aún no existen.

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

Esto debería ayudarte a comenzar: la plantilla de la aplicación de Internet es una buena plantilla a seguir si te quedas atascado.

Espero que esto ayude.