シンプルなメンバーシップ プロバイダーを mysql で使用することは可能ですか (Entity Framework も使用)
はいの場合、それを達成する方法。
ドキュメント/リンクは本当に感謝しています
少し早いですがお礼を
シンプルなメンバーシップ プロバイダーを mysql で使用することは可能ですか (Entity Framework も使用)
はいの場合、それを達成する方法。
ドキュメント/リンクは本当に感謝しています
少し早いですがお礼を
GitHub で MySqlSimpleMembershipProvider を作成し、サンプル プロジェクトを作成します。
https://github.com/xyz37/MySqlSimpleMembershipProvider
それで全部です。
この質問への回答ありがとうございます。
クリックしてスクリーンショットのサンプルを表示: https://raw.github.com/xyz37/MySqlSimpleMembershipProvider/master/_ScreenShot/SimpleMembershipProviderTest.png
SimpleMembership と OAuth を mySQL と bigint、または任意のデータベースとデータ型で使用する方法については、Fabio Costa の短い記事を参照してください: http://fabiocosta.ca/2012/11/24/use-simplemembership-and-oauth-with- any-database-and-datatype/ . それはあなたの問題を解決するはずです。幸運を。
また、コードに次の変更を加えました。
MySql.Data、MySql.Data.Entity、および MySql.Web への参照を追加しました。各参照でプロパティ 'Copy Local' を true に変更しました。
接続文字列を変更し、web.config に DbProviderFactory を追加して、MySql 接続を有効にしました。
web.config に roleManager と memberShip の構成を追加しました。
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());
}
}
残念だけど違う。
SimpleMembershipProvider
最終的には、MembershipProvider
私たち全員が愛したり嫌ったりする、古き良きものから派生したクラスにすぎません。
カスタムを機能させるためにオーバーライドしなければならない抽象関数の数が気に入らなかったためですMembershipProvider
。したがって、これは非常に単純化された の実装ですMembershipProvider
。でこれらの関数の実装を再度オーバーライドする必要がありますSimpleMembershipProvider
。
MembershipProvider
DB 設計の変更について同じ質問があり、カスタムクラスに戻らなければなりませんでした。
また、Microsoft の従業員/ASP.NET 開発者であるJohn Galloway のブログから引用:
SimpleMembership はデータベースに依存しませんが、SQL Server ファミリ全体で機能します。引き続き完全な SQL Server をサポートしますが、SQL Azure、SQL Server CE、SQL Server Express、および LocalDB でも動作します。ストアド プロシージャ、ビュー、エージェント、および変更通知を要求するのではなく、すべてが SQL 呼び出しとして実装されます。
SimpleMembership にはまだ SQL Server のフレーバーが必要であることに注意してください - MySQL、NoSQL データベースなどでは動作しません。理由 - 特にテーブルの作成および初期化時に、SQL Server 固有の SQL ステートメントが実行される場所があります。テーブルを個別に作成すれば、別のデータベースで作業できるように思えますが、試していないため、現時点ではサポートされていません。
驚くべきことにプロバイダーは非常に少なく、MySQL にはまったくないように思えます。これは本当に悲しいことです。SimpleMemberShip Provider をオーバーライドして MySQL で動作させるのは簡単に思えますが、これを実行するパッケージを作成した人を見つけることができません。
ただし、問題ないように見えるMonogDBのパッケージを見つけました(ただし、テストしませんでした) http://extmongomembership.codeplex.com/
将来、MySQL がこれをサポートすることを期待するしかありませんが、それについての発表はないので疑わしいと思います。
私は LLBLGen (MySql、Oracle、Firebird、DB2 などで動作します) を使用してそれを行っています。
必要な DAL 戦略を使用して ExtendedMembershipProvider の独自の実装を作成することにより、この記事で説明したのと同じことを行うことができます。Entity Framework を使用する場合は、Entity Framework をサポートする MySql プロバイダーを使用してプロバイダーの実装をコーディングします ( DevArt の MySql Entity Framework Tutorialを参照)。