2012-09-27 32 views
5

使用簡單的成員資格提供能夠使用簡單的成員資格提供與MySQL(也使用實體框架)與MySQL

如果是,如何去實現它。

任何文件/鏈接非常感謝

預先感謝

回答

9

創建GitHub上MySqlSimpleMembershipProvider,使樣本項目。

https://github.com/xyz37/MySqlSimpleMembershipProvider

這就是全部。

謝謝你對這個問題的回答。

點擊樣截圖:https://raw.github.com/xyz37/MySqlSimpleMembershipProvider/master/_ScreenShot/SimpleMembershipProviderTest.png

+0

這是我剛剛使用的答案Kim的應用程序和它的工作原理 – Diin

+0

不錯的工作Kim。保持良好的工作! – ssanchezz23

+0

@Kim Ki Won,我嘗試在我的項目中添加擴展,但成效有限。最大的問題是數據庫上下文。 MySql.Web.Extension項目中的類與MVC4模板附帶的部分類UserProfile非常相似,爲什麼? –

2

不幸的是,沒有。

SimpleMembershipProvider最終只是我們都愛和恨的好,舊MembershipProvider的派生類。

它在那裏,因爲人們不喜歡有多少抽象函數,你必須重寫,以獲得自定義MembershipProvider工作。所以這是一個非常愚蠢的實現MembershipProvider。您必須重新覆蓋這些功能的實現SimpleMembershipProvider

我對修改數據庫設計有同樣的問題,不得不回到定製的MembershipProvider類。

此外,從微軟員工/ ASP.NET開發人員John Galloway's blog採取:

雖然SimpleMembership不是數據庫無關,它的工作原理跨 SQL Server系列。它繼續支持完整的SQL Server,但它也可以與SQL Azure,SQL Server CE,SQL Server Express和LocalDB一起使用。一切都以SQL調用的方式實現,而不是要求存儲過程,視圖,代理和更改通知。

注意SimpleMembership仍需要SQL Server的一些味道 - 它不會與MySQL,NoSQL數據庫等工作,你可以使用若是喜歡ILSpy的工具來看看 在WebMatrix.WebData.dll代碼你想 喜歡看看爲什麼 - 有些地方正在執行SQL Server特定的SQL 語句,特別是在創建表時和初始化表時 。似乎你可能能夠與 另一個數據庫,如果你分開創建表,但我沒有 嘗試它,它不支持在這一點上。

1

我正在使用LLBLGen(適用於MySql,Oracle,Firebird,DB2等):SimpleMembershipProvider in MVC4 for MySql, Oracle, and more with LLBLGen

您可以按照本文所述執行相同的操作,方法是使用您想要的任何DAL策略創建您自己的ExtendedMembershipProvider實現。如果您想使用實體框架,您將使用支持實體框架的MySql提供程序編寫您的提供程序實現(請參閱:DevArt's MySql Entity Framework Tutorial)。

1

令人驚訝的是,很少有提供者在那裏,對MySQL來說看起來沒有一個真的很傷心。 重寫SimpleMemberShip Provider以使用MySQL似乎很容易,但我無法找到任何爲此提供工作包的人。

,但我卻找到MonogDB一個包,看上去沒(沒雖然測試) http://extmongomembership.codeplex.com/

我們只能希望,MySQL將支持這種未來 - 但我懷疑它,因爲沒有公告關於它。

4

查看Fabio Costa撰寫的關於如何使用SimpleMembership和OAuth與mySQL和bigint或任何您需要的數據庫和數據類型的簡短文章:http://fabiocosta.ca/2012/11/24/use-simplemembership-and-oauth-with-any-database-and-datatype/。它應該解決你的問題。祝你好運。

我還做了以下修改我的代碼:

  • 添加引用MySql.Data,MySql.Data.Entity和MySql.Web。在每個參考上修改屬性「複製本地」爲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中創建表。

_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()); 
    } 
} 
+1

http://fabiocanada.ca/2012/11/24/use-simplemembership-and-oauth-with-any-database-and-datatype/鏈接不工作:( –

0

是隻需訪問https://github.com/xyz37/MySqlSimpleMembershipProvider

下載示例應用程序,並修改您的需求。它開箱即用很棒。如果在遇到無法創建數據庫的錯誤時,在創建用戶和適當權限後首次運行應用程序,請刷新瀏覽器一次或兩次,並創建數據庫。