2012-09-27 27 views

Trả lời

9

tôi tạo MySqlSimpleMembershipProvider trên GitHub và làm cho các dự án mẫu.

https://github.com/xyz37/MySqlSimpleMembershipProvider

Đó là tất cả.

Cảm ơn bạn đã trả lời câu hỏi này.

Bấm để lấy mẫu ảnh chụp màn hình: https://raw.github.com/xyz37/MySqlSimpleMembershipProvider/master/_ScreenShot/SimpleMembershipProviderTest.png

+0

Đây là câu trả lời tôi vừa sử dụng Ứng dụng của Kim và nó hoạt động – Diin

+0

Công việc tuyệt vời Kim Hãy theo dõi công việc tốt! – ssanchezz23

+0

@Kim Ki Won, tôi đã thử thêm phần mở rộng vào dự án của mình với thành công hạn chế. Vấn đề lớn nhất là bối cảnh DB. Bạn có một 'UserProfile' lớp trong dự án MySql.Web.Extension rất giống với lớp partial 'UserProfile' đi kèm với mẫu MVC4. –

2

Thật không may, không có.

SimpleMembershipProvider cuối cùng chỉ là một lớp dẫn xuất của hàng hóa cũ, cũ MembershipProvider mà tất cả chúng ta đều yêu và ghét.

Có ở đó vì mọi người không thích có bao nhiêu hàm trừu tượng bạn phải ghi đè để có được tùy chỉnh MembershipProvider hoạt động. Vì vậy, đây là một thực hiện rất nhiều dumbed xuống của MembershipProvider. Bạn sẽ phải quay lại việc ghi đè lại các triển khai cho các chức năng này với SimpleMembershipProvider.

Tôi đã có câu hỏi tương tự về việc sửa đổi thiết kế DB, phải quay lại lớp tùy chỉnh MembershipProvider.

Ngoài ra, lấy từ Microsoft nhân viên/ASP.NET phát triển John Galloway's blog:

Trong khi SimpleMembership không phải là cơ sở dữ liệu thuyết bất khả tri, nó hoạt động trên máy chủ gia đình SQL. Nó tiếp tục hỗ trợ đầy đủ SQL Server, nhưng nó cũng hoạt động với SQL Azure, SQL Server CE, SQL Server Express và LocalDB. Mọi thứ được triển khai dưới dạng các cuộc gọi SQL thay vì yêu cầu các thủ tục được lưu trữ, lượt xem, tác nhân và thay đổi thông báo.

Lưu ý rằng SimpleMembership vẫn yêu cầu một số hương vị của SQL Server - nó sẽ không hoạt động với cơ sở dữ liệu MySQL, NoSQL, v.v. Bạn có thể xem mã trong WebMatrix.WebData.dll bằng công cụ như ILSpy nếu bạn muốn muốn xem tại sao - có những nơi mà các câu lệnh SQL SQL Server cụ thể đang được thực thi, đặc biệt khi tạo và khởi tạo các bảng. Có vẻ như bạn có thể làm việc với cơ sở dữ liệu khác nếu bạn đã tạo riêng các bảng, nhưng tôi chưa đã thử nó và nó không được hỗ trợ tại thời điểm này.

1

Tôi đang làm điều đó bằng cách sử dụng LLBLGen (hoạt động cho MySql, Oracle, Firebird, DB2 và hơn thế nữa): SimpleMembershipProvider in MVC4 for MySql, Oracle, and more with LLBLGen.

Bạn có thể làm tương tự như được mô tả trong bài viết này bằng cách tạo triển khai của riêng bạn của ExtendedMembershipProvider với bất kỳ chiến lược DAL nào bạn muốn. Nếu bạn muốn sử dụng Entity Framework, bạn sẽ mã thực hiện nhà cung cấp của bạn với một nhà cung cấp MySql có hỗ trợ khung thực thể (xem: DevArt's MySql Entity Framework Tutorial).

1

Có rất ít nhà cung cấp đáng ngạc nhiên ngoài đó và có vẻ như không có gì cho MySQL thực sự đáng buồn. Dường như sẽ dễ dàng ghi đè Nhà cung cấp SimpleMemberShip để làm việc với MySQL nhưng tôi không thể tìm thấy bất kỳ ai đã thực hiện gói làm việc cho việc này.

Tôi tuy nhiên tìm thấy một gói cho MonogDB trông ok (không kiểm tra nó mặc dù) http://extmongomembership.codeplex.com/

Chúng tôi chỉ có thể hy vọng rằng MySQL sẽ hỗ trợ này trong tương lai - mặc dù tôi nghi ngờ nó như không có thông báo về nó.

4

Kiểm tra bài viết ngắn này từ Fabio Costa về cách sử dụng SimpleMembership và OAuth với mySQL và bigint hoặc bất kỳ cơ sở dữ liệu và kiểu dữ liệu nào bạn muốn: http://fabiocosta.ca/2012/11/24/use-simplemembership-and-oauth-with-any-database-and-datatype/. Nó sẽ giải quyết vấn đề của bạn. Chúc may mắn.

Tôi cũng đã làm thay đổi mã của tôi sau đây:

  • thêm tài liệu tham khảo để MySql.Data, MySql.Data.Entity và MySql.Web. Thuộc tính đã sửa đổi 'Sao chép địa phương' thành true trên mỗi tham chiếu.

  • Đã thay đổi chuỗi kết nối và thêm DbProviderFactory vào web.config để bật kết nối MySql.

  • Đã thêm vai tròQuản lý và cấu hìnhĐăng nhập trong 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> 
  • Created _AppStart.cshtml trong thư mục gốc để khởi tạo kết nối db và autom. tạo bảng trong db khi khởi động ứng dụng.

_AppStart.cshtml

@{ 
    if (!WebSecurity.Initialized) 
    { 
     WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", "UserId", "UserName", autoCreateTables: true); 
    } 
} 
  • thêm bộ lọc để đảm bảo kết nối db trong yêu cầu xác thực. Điều này giống như đặt thuộc tính InitializeSimpleMembership theo cách thủ công trên mỗi bộ điều khiển.

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/ liên kết không hoạt động :( –

0

Có Chỉ cần truy cập https://github.com/xyz37/MySqlSimpleMembershipProvider

Tải ứng dụng mẫu và sửa đổi yêu cầu của bạn. Nó hoạt động tuyệt vời ra khỏi hộp.Khi bạn chạy ứng dụng lần đầu tiên sau khi ép người dùng và các điều khoản thích hợp nếu bạn gặp lỗi mà cơ sở dữ liệu không thể được tạo, hãy làm mới trình duyệt một lần hoặc hai lần và nó sẽ tạo cơ sở dữ liệu.

Các vấn đề liên quan