5

シンプルなメンバーシップ プロバイダーを mysql で使用することは可能ですか (Entity Framework も使用)

はいの場合、それを達成する方法。

ドキュメント/リンクは本当に感謝しています

少し早いですがお礼を

4

7 に答える 7

9

GitHub で MySqlSimpleMembershipProvider を作成し、サンプル プロジェクトを作成します。

https://github.com/xyz37/MySqlSimpleMembershipProvider

それで全部です。

この質問への回答ありがとうございます。

クリックしてスクリーンショットのサンプルを表示: https://raw.github.com/xyz37/MySqlSimpleMembershipProvider/master/_ScreenShot/SimpleMembershipProviderTest.png

于 2013-04-22T08:51:29.057 に答える
4

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 を作成して、db 接続と autom を初期化します。アプリケーションの起動時にデータベースにテーブルを作成します。

_AppStart.cshtml

@{
    if (!WebSecurity.Initialized)
    {
        WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", "UserId", "UserName", autoCreateTables: true);
    }
}
  • 認証リクエスト中にデータベース接続を確保するためのフィルターを追加しました。これは、各コントローラーに InitializeSimpleMembership 属性を手動で配置することと同じです。

App_Start\FilterConfig.cs

public class FilterConfig
{
    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        filters.Add(new HandleErrorAttribute());
        filters.Add(new InitializeSimpleMembershipAttribute());
    }
}
于 2013-04-04T00:32:17.380 に答える
2

残念だけど違う。

SimpleMembershipProvider最終的には、MembershipProvider私たち全員が愛したり嫌ったりする、古き良きものから派生したクラスにすぎません。

カスタムを機能させるためにオーバーライドしなければならない抽象関数の数が気に入らなかったためですMembershipProvider。したがって、これは非常に単純化された の実装ですMembershipProvider。でこれらの関数の実装を再度オーバーライドする必要がありますSimpleMembershipProvider

MembershipProviderDB 設計の変更について同じ質問があり、カスタムクラスに戻らなければなりませんでした。

また、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 ステートメントが実行される場所があります。テーブルを個別に作成すれば、別のデータベースで作業できるように思えますが、試していないため、現時点ではサポートされていません。

于 2012-10-19T20:21:29.467 に答える
1

驚くべきことにプロバイダーは非常に少なく、MySQL にはまったくないように思えます。これは本当に悲しいことです。SimpleMemberShip Provider をオーバーライドして MySQL で動作させるのは簡単に思えますが、これを実行するパッケージを作成した人を見つけることができません。

ただし、問題ないように見えるMonogDBのパッケージを見つけました(ただし、テストしませんでした) http://extmongomembership.codeplex.com/

将来、MySQL がこれをサポートすることを期待するしかありませんが、それについての発表はないので疑わしいと思います。

于 2013-02-25T14:30:55.703 に答える
1

私は LLBLGen (MySql、Oracle、Firebird、DB2 などで動作します) を使用してそれを行っています

必要な DAL 戦略を使用して ExtendedMembershipProvider の独自の実装を作成することにより、この記事で説明したのと同じことを行うことができます。Entity Framework を使用する場合は、Entity Framework をサポートする MySql プロバイダーを使用してプロバイダーの実装をコーディングします ( DevArt の MySql Entity Framework Tutorialを参照)。

于 2012-11-10T19:32:30.600 に答える