Czy jest możliwe użycie prostych dostawcę członkostwa z mysql (również przy użyciu Entity Framework)pomocą prostych dostawcę członkostwa z mysql
Jeśli tak, jak to osiągnąć.
Jakakolwiek dokumentacja/link jest naprawdę ceniona
Dziękuję z góry
Czy jest możliwe użycie prostych dostawcę członkostwa z mysql (również przy użyciu Entity Framework)pomocą prostych dostawcę członkostwa z mysql
Jeśli tak, jak to osiągnąć.
Jakakolwiek dokumentacja/link jest naprawdę ceniona
Dziękuję z góry
tworzę MySqlSimpleMembershipProvider na GitHub i uczynić przykładowe projekty.
https://github.com/xyz37/MySqlSimpleMembershipProvider
To wszystko.
Dziękuję za odpowiedź na to pytanie.
Kliknij aby Przykładowy zrzut ekranu: https://raw.github.com/xyz37/MySqlSimpleMembershipProvider/master/_ScreenShot/SimpleMembershipProviderTest.png
Niestety, nie.
SimpleMembershipProvider
jest ostatecznie pochodną klasy dobrego, starego MembershipProvider
, którą wszyscy kochamy i nienawidzimy.
Jest tam, ponieważ ludziom nie podobało się, ile abstrakcyjnych funkcji trzeba zastąpić, aby uzyskać niestandardową pracę. Jest to więc bardzo uproszczona implementacja MembershipProvider
. Powinieneś cofnąć ponowne zastąpienie implementacji dla tych funkcji za pomocą SimpleMembershipProvider
.
Miałem to samo pytanie dotyczące modyfikacji projektu DB, musiałem wrócić do niestandardowej klasy MembershipProvider
.
Również pochodzi z Microsoft pracownika/ASP.NET programista John Galloway's blog:
Podczas SimpleMembership nie jest baza danych agnostykiem, to działa w całej rodzinie SQL Server. W dalszym ciągu obsługuje pełny SQL Server, ale działa również z SQL Azure, SQL Server CE, SQL Server Express i LocalDB. Wszystko jest zaimplementowane jako wywołania SQL, a nie wymaga procedur składowanych, widoków, agentów i powiadomień o zmianach.
Zauważ, że SimpleMembership nadal wymaga pewnego smaku SQL Server - nie będzie pracować z bazami danych MySQL, NoSQL itp Można przyjrzeć kodu w WebMatrix.WebData.dll stosując narzędzia takie jak ILSpy if Ty byś chciał wiedzieć, dlaczego są miejsca, w których wykonywane są instrukcje SQL Server specyficzne dla SQL , szczególnie podczas tworzenia i tworzenia tabel. Wygląda na to, że możesz pracować z inną bazą danych, jeśli utworzyłeś tabele osobno, ale nie wypróbowałem tego i nie było to obsługiwane w tym momencie.
Robię to za pomocą LLBLGen (który pracuje dla MySQL, Oracle, Firebird, DB2, i więcej): SimpleMembershipProvider in MVC4 for MySql, Oracle, and more with LLBLGen.
Możesz zrobić to samo, jak opisano w tym artykule, tworząc własną implementację ExtendedMembershipProvider z dowolną strategią DAL. Jeśli chcesz użyć Entity Framework, zakodujesz implementację dostawcy z dostawcą MySql obsługującym Entity Framework (patrz: DevArt's MySql Entity Framework Tutorial).
Istnieje zaskakująco niewielu dostawców i wydaje się, że nie ma żadnego dla MySQL, który jest naprawdę smutny. Łatwo byłoby przesłonić dostawcę SimpleMemberShip do pracy z MySQL, ale nie mogę znaleźć nikogo, kto przygotowałby dla niego pakiet roboczy.
Zrobiłem jednak znaleźć pakiet dla MonogDB który wygląda ok (nie testowałem go jednak) http://extmongomembership.codeplex.com/
Możemy mieć tylko nadzieję, że MySQL będzie wspierać ten w przyszłości - choć wątpię, gdyż nie ma ogłoszenia o tym.
Sprawdź ten krótki artykuł Fabio Costa na temat używania SimpleMembership i OAuth z mySQL i bigintem lub dowolną bazą danych i typem danych: http://fabiocosta.ca/2012/11/24/use-simplemembership-and-oauth-with-any-database-and-datatype/. To powinno rozwiązać twój problem. Powodzenia.
Zrobiłem też następujące zmiany do mojego kodu:
Dodano odniesienia do MySql.Data, MySql.Data.Entity i MySql.Web. Zmodyfikowana właściwość "Kopiuj lokalnie" na wartość true dla każdego odwołania.
Zmieniono łańcuch połączeń i dodano DbProviderFactory w pliku web.config, aby włączyć połączenia MySql.
Dodano konfigurację roleManager i memberShip w pliku 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>
_AppStart.cshtml
@{
if (!WebSecurity.Initialized)
{
WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", "UserId", "UserName", autoCreateTables: true);
}
}
App_Start \ FilterConfig.cs
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
filters.Add(new InitializeSimpleMembershipAttribute());
}
}
http://fabiocanada.ca/2012/11/24/use-simplemembership-and-oauth-with-any-database-and-datatype/ link nie działa :( –
Tak Wystarczy odwiedzić https://github.com/xyz37/MySqlSimpleMembershipProvider
Pobierz przykładową aplikację i modyfikować do własnych potrzeb. Działa świetnie po wyjęciu z pudełka.Kiedy uruchamiasz aplikację po raz pierwszy po kratowaniu użytkownika i odpowiednich uprawnień, jeśli pojawi się błąd, że nie można utworzyć bazy danych, odśwież przeglądarkę raz lub dwa razy, a utworzy ona bazę danych.
Jedna z zaakceptowanych odpowiedzi jest uaktualniona pod adresem https://mysqlmembershipprovider.codeplex.com/, która jest oparta na pracach xyz37 i stosie ASP.NET Web.
Oto odpowiedź, której właśnie użyłem Aplikacja Kim i działa – Diin
Dobra robota Kim, kontynuuj dobrą pracę! – ssanchezz23
@Kim Ki Won, Próbowałem dodać rozszerzenia do mojego projektu z ograniczonym sukcesem.Największy problem to kontekst DB. Masz 'UserProfile' klasy w projekcie MySql.Web.Extension, który jest bardzo podobny do częściowej klasy "UserProfile" dostarczanej z szablonem MVC4. –