2012-09-27 16 views
5

¿Es posible el uso de proveedor de suscripciones simple con MySQL (también usando Entity Framework)proveedor de suscripciones simple con MySQL

En caso afirmativo, la forma de lograrlo.

Cualquier documentación/enlace es muy apreciado

Gracias de antemano

Respuesta

9

creo MySqlSimpleMembershipProvider en GitHub y hacer proyectos de la muestra.

https://github.com/xyz37/MySqlSimpleMembershipProvider

eso es todo.

Gracias por la respuesta a esta pregunta.

haga clic para muestrear pantalla: https://raw.github.com/xyz37/MySqlSimpleMembershipProvider/master/_ScreenShot/SimpleMembershipProviderTest.png

+0

Esta es la respuesta que acabo de utilizar La aplicación de Kim funciona – Diin

+0

Buen trabajo Kim. ¡Continúa con el buen trabajo! – ssanchezz23

+0

@Kim Ki Won, he tratado de agregar las extensiones a mi proyecto con éxito limitado. El mayor problema es el contexto de la base de datos. Tienes un 'Perfil de usuario' clase en el proyecto MySql.Web.Extension que es muy similar a la clase parcial 'UserProfile' que viene con la plantilla MVC4. ¿Por qué? –

2

Por desgracia, no.

SimpleMembershipProvider es, en última instancia, solo una clase derivada del bueno, viejo MembershipProvider que todos amamos y odiamos.

Está ahí porque a la gente no le gustaba la cantidad de funciones abstractas que tendría que anular para obtener un funcionamiento personalizado de MembershipProvider. Así que esta es una implementación muy estúpida de MembershipProvider. Tendría que volver a anular las implementaciones para estas funciones con SimpleMembershipProvider.

Tuve la misma pregunta sobre la modificación del diseño de la base de datos, tuve que volver a una clase personalizada MembershipProvider.

Además, tomado de Microsoft empleado desarrollador/ASP.NET John Galloway's blog:

Mientras SimpleMembership base de datos no es agnóstico, que funciona a través de la familia SQL Server. Sigue siendo compatible con SQL Server completo, pero también funciona con SQL Azure, SQL Server CE, SQL Server Express y LocalDB. Todo se implementa como llamadas SQL en lugar de requerir procedimientos almacenados, vistas, agentes y notificaciones de cambio.

Tenga en cuenta que SimpleMembership es necesario un cierto sabor de SQL Server - no va a funcionar con MySQL, bases de datos NoSQL, etc Usted puede echar un vistazo a el código en WebMatrix.WebData.dll usando una herramienta como si ILSpy le gustaría ver - hay lugares donde se están ejecutando las sentencias de SQL Server específicas de SQL Server, especialmente al crear y tablas de inicialización. Parece que es posible que pueda trabajar con otra base de datos si creó las tablas por separado, pero no lo he intentado con y no es compatible en este momento.

1

Lo hago utilizando LLBLGen (que funciona para MySql, Oracle, Firebird, DB2, y más): SimpleMembershipProvider in MVC4 for MySql, Oracle, and more with LLBLGen.

Puede hacer lo mismo que se describe en este artículo al crear su propia implementación de ExtendedMembershipProvider con cualquier estrategia DAL que desee. Si desea utilizar Entity Framework, codificará la implementación de su proveedor con un proveedor de MySql que admita Entity Framework (vea: DevArt's MySql Entity Framework Tutorial).

1

Sorprendentemente, hay muy pocos proveedores y parece que ninguno para MySQL, lo que es realmente triste. Parece ser fácil anular el proveedor SimpleMemberShip para trabajar con MySQL, pero no puedo encontrar a nadie que haya creado un paquete que funcione para esto.

Yo sin embargo encontrar un paquete de MonogDB que se ve bien (no probó que aunque) http://extmongomembership.codeplex.com/

solo nos queda esperar que MySQL apoyará esto en el futuro - aunque lo dudo ya que no hay anuncios al respecto.

4

Consulte este breve artículo de Fabio Costa sobre cómo usar SimpleMembership y OAuth con mySQL y bigint o cualquier base de datos y tipo de datos que desee: http://fabiocosta.ca/2012/11/24/use-simplemembership-and-oauth-with-any-database-and-datatype/. debería resolver tu problema. Buena suerte.

También hice cambios en mi siguiente código:

  • referencias añaden a MySql.Data, MySql.Data.Entity y MySql.Web. Propiedad modificada 'Copiar local' en verdadero en cada referencia.

  • Se cambió la conexión de la línea y se agregó DbProviderFactory en web.config para habilitar las conexiones de MySql.

  • Se agregó la configuración de roleManager y memberShip en web.config.

web.config

<connectionStrings>  
    <add name="DefaultConnection" connectionString="Data Source=localhost;Database=dbname;User ID=username;Password=password;" providerName="MySql.Data.MySqlClient" /> 
</connectionStrings> 
<system.data> 
    <DbProviderFactories> 
     <clear /> 
     <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.6.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" /> 
    </DbProviderFactories> 
</system.data> 
<system.web> 
    <roleManager enabled="true" defaultProvider="simple"> 
     <providers> 
      <clear/> 
      <add name="simple" type="WebMatrix.WebData.SimpleRoleProvider, WebMatrix.WebData"/> 
     </providers> 
    </roleManager> 
    <membership defaultProvider="simple"> 
     <providers> 
      <clear/> 
      <add name="simple" type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData"/> 
     </providers> 
    </membership> 
</system.web> 
  • Creado _AppStart.cshtml en la raíz de inicializar la conexión db y autom. crear tablas en db al inicio de la aplicación.

_AppStart.cshtml

@{ 
    if (!WebSecurity.Initialized) 
    { 
     WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", "UserId", "UserName", autoCreateTables: true); 
    } 
} 
  • filtro Añadido para asegurar la conexión db durante las solicitudes de autenticación. Esto es lo mismo que colocar manualmente el atributo InitializeSimpleMembership en cada controlador.

App_Start \ FilterConfig.cs

public class FilterConfig 
{ 
    public static void RegisterGlobalFilters(GlobalFilterCollection filters) 
    { 
     filters.Add(new HandleErrorAttribute()); 
     filters.Add(new InitializeSimpleMembershipAttribute()); 
    } 
} 
+1

http://fabiocanada.ca/2012/11/24/use-simplemembership-and-oauth-with-any-database-and-datatype/ link is not working :( –

0

Si sólo hay que visitar https://github.com/xyz37/MySqlSimpleMembershipProvider

Descarga la aplicación de ejemplo y modificar a sus necesidades. Funciona muy bien de la caja.Cuando ejecuta la aplicación por primera vez después de enrutar al usuario y los permisos apropiados si obtiene un error de que no se pudo crear la base de datos, actualice el navegador una o dos veces y se creará la base de datos.

Cuestiones relacionadas